Add support for RegExp "dotAll" flag
[WebKit-https.git] / Source / JavaScriptCore / runtime / CommonIdentifiers.h
1 /*
2  *  Copyright (C) 2003-2017 Apple Inc. All rights reserved.
3  *
4  *  This library is free software; you can redistribute it and/or
5  *  modify it under the terms of the GNU Library General Public
6  *  License as published by the Free Software Foundation; either
7  *  version 2 of the License, or (at your option) any later version.
8  *
9  *  This library is distributed in the hope that it will be useful,
10  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  *  Library General Public License for more details.
13  *
14  *  You should have received a copy of the GNU Library General Public License
15  *  along with this library; see the file COPYING.LIB.  If not, write to
16  *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  *  Boston, MA 02110-1301, USA.
18  *
19  */
20
21 #pragma once
22
23 #include "Identifier.h"
24 #include <wtf/Noncopyable.h>
25
26 // MarkedArgumentBuffer of property names, passed to a macro so we can do set them up various
27 // ways without repeating the list.
28 #define JSC_COMMON_IDENTIFIERS_EACH_PROPERTY_NAME(macro) \
29     macro(Animation) \
30     macro(AnimationEffectReadOnly) \
31     macro(AnimationTimeline) \
32     macro(Array) \
33     macro(ArrayBuffer) \
34     macro(ArrayIterator) \
35     macro(Audio) \
36     macro(BYTES_PER_ELEMENT) \
37     macro(Boolean) \
38     macro(Cache) \
39     macro(CacheStorage) \
40     macro(Collator) \
41     macro(Credential) \
42     macro(CredentialsContainer) \
43     macro(CustomElementRegistry) \
44     macro(Date) \
45     macro(DateTimeFormat) \
46     macro(DataTransferItem) \
47     macro(DataTransferItemList) \
48     macro(DocumentTimeline) \
49     macro(Error) \
50     macro(EvalError) \
51     macro(FederatedCredential) \
52     macro(Function) \
53     macro(Gamepad) \
54     macro(GamepadButton) \
55     macro(GamepadEvent) \
56     macro(GeneratorFunction) \
57     macro(Headers) \
58     macro(HTMLAudioElement) \
59     macro(HTMLSlotElement) \
60     macro(IDBCursor) \
61     macro(IDBCursorWithValue) \
62     macro(IDBDatabase) \
63     macro(IDBFactory) \
64     macro(IDBIndex) \
65     macro(IDBKeyRange) \
66     macro(IDBObjectStore) \
67     macro(IDBOpenDBRequest) \
68     macro(IDBRequest) \
69     macro(IDBTransaction) \
70     macro(IDBVersionChangeEvent) \
71     macro(Infinity) \
72     macro(InputEvent) \
73     macro(IntersectionObserver) \
74     macro(IntersectionObserverEntry) \
75     macro(Intl) \
76     macro(JSON) \
77     macro(Loader) \
78     macro(Map)\
79     macro(MapIterator)\
80     macro(Math) \
81     macro(MediaEncryptedEvent) \
82     macro(MediaKeyMessageEvent) \
83     macro(MediaKeySession) \
84     macro(MediaKeyStatusMap) \
85     macro(MediaKeySystemAccess) \
86     macro(MediaKeys) \
87     macro(WebKitMediaKeyError) \
88     macro(WebKitMediaKeyNeededEvent) \
89     macro(WebKitMediaKeySession) \
90     macro(WebKitMediaKeys) \
91     macro(WebKitMediaKeyMessageEvent) \
92     macro(MediaStreamEvent) \
93     macro(ModernMediaControls) \
94     macro(NaN) \
95     macro(NavigatorCredentials) \
96     macro(NavigatorMediaDevices) \
97     macro(NavigatorUserMedia) \
98     macro(Number) \
99     macro(NumberFormat) \
100     macro(Object) \
101     macro(PasswordCredential) \
102     macro(PaymentAddress) \
103     macro(PaymentRequest) \
104     macro(PaymentRequestUpdateEvent) \
105     macro(PaymentResponse) \
106     macro(PerformanceEntry) \
107     macro(PerformanceEntryList) \
108     macro(PerformanceMark) \
109     macro(PerformanceMeasure) \
110     macro(PerformanceObserver) \
111     macro(PerformanceObserverEntryList) \
112     macro(PerformanceResourceTiming) \
113     macro(Promise) \
114     macro(Proxy) \
115     macro(RangeError) \
116     macro(ReferenceError) \
117     macro(Reflect) \
118     macro(RegExp) \
119     macro(Request) \
120     macro(Response) \
121     macro(RTCDataChannel) \
122     macro(RTCDataChannelEvent) \
123     macro(RTCDTMFSender) \
124     macro(RTCDTMFToneChangeEvent) \
125     macro(RTCIceCandidate) \
126     macro(RTCIceTransport) \
127     macro(RTCPeerConnection) \
128     macro(RTCRtpReceiver) \
129     macro(RTCRtpSender) \
130     macro(RTCRtpTransceiver) \
131     macro(RTCSessionDescription) \
132     macro(RTCStatsReport) \
133     macro(RTCTrackEvent) \
134     macro(ServiceWorker)\
135     macro(ServiceWorkerContainer)\
136     macro(ServiceWorkerGlobalScope)\
137     macro(ServiceWorkerRegistration)\
138     macro(Set)\
139     macro(SetIterator)\
140     macro(ShadowRoot) \
141     macro(SharedArrayBuffer) \
142     macro(StaticRange) \
143     macro(String) \
144     macro(Symbol) \
145     macro(SyntaxError) \
146     macro(TypeError) \
147     macro(URIError) \
148     macro(UTC) \
149     macro(WeakMap)\
150     macro(WeakSet)\
151     macro(WebGL2RenderingContext) \
152     macro(WebGLVertexArrayObject) \
153     macro(WebGPUBuffer) \
154     macro(WebGPUCommandBuffer) \
155     macro(WebGPUCommandQueue) \
156     macro(WebGPUComputeCommandEncoder) \
157     macro(WebGPUComputePipelineState) \
158     macro(WebGPUDepthStencilDescriptor) \
159     macro(WebGPUDepthStencilState) \
160     macro(WebGPUDrawable) \
161     macro(WebGPUFunction) \
162     macro(WebGPULibrary) \
163     macro(WebGPURenderCommandEncoder) \
164     macro(WebGPURenderPassAttachmentDescriptor) \
165     macro(WebGPURenderPassColorAttachmentDescriptor) \
166     macro(WebGPURenderPassDepthAttachmentDescriptor) \
167     macro(WebGPURenderPassDescriptor) \
168     macro(WebGPURenderPipelineColorAttachmentDescriptor) \
169     macro(WebGPURenderPipelineDescriptor) \
170     macro(WebGPURenderPipelineState) \
171     macro(WebGPURenderingContext) \
172     macro(WebGPUSize) \
173     macro(WebGPUTexture) \
174     macro(WebGPUTextureDescriptor) \
175     macro(WebSocket) \
176     macro(WritableStream) \
177     macro(__defineGetter__) \
178     macro(__defineSetter__) \
179     macro(__lookupGetter__) \
180     macro(__lookupSetter__) \
181     macro(add) \
182     macro(additionalJettisonReason) \
183     macro(anonymous) \
184     macro(arguments) \
185     macro(as) \
186     macro(assign) \
187     macro(back) \
188     macro(bind) \
189     macro(blur) \
190     macro(buffer) \
191     macro(byteLength) \
192     macro(byteOffset) \
193     macro(bytecode) \
194     macro(bytecodeIndex) \
195     macro(bytecodes) \
196     macro(bytecodesID) \
197     macro(caches) \
198     macro(calendar) \
199     macro(callee) \
200     macro(caller) \
201     macro(caseFirst) \
202     macro(clear) \
203     macro(close) \
204     macro(closed) \
205     macro(collation) \
206     macro(column) \
207     macro(compilationKind) \
208     macro(compilationUID) \
209     macro(compilations) \
210     macro(compile) \
211     macro(configurable) \
212     macro(constructor) \
213     macro(count) \
214     macro(counters) \
215     macro(customElements) \
216     macro(day) \
217     macro(defineProperty) \
218     macro(description) \
219     macro(descriptions) \
220     macro(detail) \
221     macro(displayName) \
222     macro(document) \
223     macro(done) \
224     macro(dotAll) \
225     macro(enumerable) \
226     macro(era) \
227     macro(eval) \
228     macro(events) \
229     macro(exec) \
230     macro(executionCount) \
231     macro(exitKind) \
232     macro(fetch) \
233     macro(flags) \
234     macro(focus) \
235     macro(forEach) \
236     macro(formatMatcher) \
237     macro(formatToParts) \
238     macro(forward) \
239     macro(frames) \
240     macro(from) \
241     macro(fromCharCode) \
242     macro(get) \
243     macro(global) \
244     macro(go) \
245     macro(has) \
246     macro(hasOwnProperty) \
247     macro(hash) \
248     macro(header) \
249     macro(hour) \
250     macro(hour12) \
251     macro(href) \
252     macro(id) \
253     macro(ignoreCase) \
254     macro(ignorePunctuation) \
255     macro(index) \
256     macro(indexedDB) \
257     macro(inferredName) \
258     macro(input) \
259     macro(instructionCount) \
260     macro(isArray) \
261     macro(isEnabled) \
262     macro(isPrototypeOf) \
263     macro(isSecureContext) \
264     macro(isView) \
265     macro(isWatchpoint) \
266     macro(jettisonReason) \
267     macro(join) \
268     macro(KeyframeEffect) \
269     macro(lastIndex) \
270     macro(length) \
271     macro(line) \
272     macro(locale) \
273     macro(localeMatcher) \
274     macro(location) \
275     macro(message) \
276     macro(minute) \
277     macro(month) \
278     macro(multiline) \
279     macro(name) \
280     macro(next) \
281     macro(now) \
282     macro(numInlinedCalls) \
283     macro(numInlinedGetByIds) \
284     macro(numInlinedPutByIds) \
285     macro(numberingSystem) \
286     macro(numeric) \
287     macro(of) \
288     macro(opcode) \
289     macro(opener) \
290     macro(origin) \
291     macro(osrExitSites) \
292     macro(osrExits) \
293     macro(parent) \
294     macro(parse) \
295     macro(parseInt) \
296     macro(parseFloat) \
297     macro(postMessage) \
298     macro(profiledBytecodes) \
299     macro(propertyIsEnumerable) \
300     macro(prototype) \
301     macro(raw) \
302     macro(reload) \
303     macro(replace) \
304     macro(resolve) \
305     macro(second) \
306     macro(self) \
307     macro(sensitivity) \
308     macro(set) \
309     macro(showModalDialog) \
310     macro(size) \
311     macro(slice) \
312     macro(source) \
313     macro(sourceCode) \
314     macro(sourceURL) \
315     macro(stack) \
316     macro(stackTraceLimit) \
317     macro(sticky) \
318     macro(subarray) \
319     macro(summary) \
320     macro(target) \
321     macro(test) \
322     macro(then) \
323     macro(time) \
324     macro(timeZone) \
325     macro(timeZoneName) \
326     macro(toExponential) \
327     macro(toFixed) \
328     macro(toISOString) \
329     macro(toJSON) \
330     macro(toLocaleString) \
331     macro(toPrecision) \
332     macro(toString) \
333     macro(top) \
334     macro(uid) \
335     macro(unicode) \
336     macro(usage) \
337     macro(value) \
338     macro(valueOf) \
339     macro(webkit) \
340     macro(collectMatchingElementsInFlatTree) \
341     macro(matchingElementInFlatTree) \
342     macro(webkitIDBCursor) \
343     macro(webkitIDBDatabase) \
344     macro(webkitIDBFactory) \
345     macro(webkitIDBIndex) \
346     macro(webkitIDBKeyRange) \
347     macro(webkitIDBObjectStore) \
348     macro(webkitIDBRequest) \
349     macro(webkitIDBTransaction) \
350     macro(webkitIndexedDB) \
351     macro(weekday) \
352     macro(window) \
353     macro(writable) \
354     macro(year)
355
356 #define JSC_COMMON_IDENTIFIERS_EACH_KEYWORD(macro) \
357     macro(async) \
358     macro(await) \
359     macro(break) \
360     macro(case) \
361     macro(catch) \
362     macro(class) \
363     macro(const) \
364     macro(continue) \
365     macro(debugger) \
366     macro(default) \
367     macro(delete) \
368     macro(do) \
369     macro(else) \
370     macro(enum) \
371     macro(export) \
372     macro(extends) \
373     macro(false) \
374     macro(finally) \
375     macro(for) \
376     macro(function) \
377     macro(if) \
378     macro(implements) \
379     macro(import) \
380     macro(in) \
381     macro(instanceof) \
382     macro(interface) \
383     macro(let) \
384     macro(new) \
385     macro(null) \
386     macro(package) \
387     macro(private) \
388     macro(protected) \
389     macro(public) \
390     macro(return) \
391     macro(static) \
392     macro(super) \
393     macro(switch) \
394     macro(this) \
395     macro(throw) \
396     macro(true) \
397     macro(try) \
398     macro(typeof) \
399     macro(undefined) \
400     macro(var) \
401     macro(void) \
402     macro(while) \
403     macro(with) \
404     macro(yield)
405
406 #define JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_WELL_KNOWN_SYMBOL(macro) \
407     macro(hasInstance) \
408     macro(isConcatSpreadable) \
409     macro(asyncIterator) \
410     macro(iterator) \
411     macro(match) \
412     macro(replace) \
413     macro(search) \
414     macro(species) \
415     macro(split) \
416     macro(toPrimitive) \
417     macro(toStringTag) \
418     macro(unscopables)
419
420 namespace JSC {
421     
422     class BuiltinNames;
423     
424     class CommonIdentifiers {
425         WTF_MAKE_NONCOPYABLE(CommonIdentifiers); WTF_MAKE_FAST_ALLOCATED;
426     private:
427         CommonIdentifiers(VM*);
428         ~CommonIdentifiers();
429         friend class VM;
430         
431     public:
432         const BuiltinNames& builtinNames() const { return *m_builtinNames; }
433         const Identifier nullIdentifier;
434         const Identifier emptyIdentifier;
435         const Identifier underscoreProto;
436         const Identifier thisIdentifier;
437         const Identifier useStrictIdentifier;
438         const Identifier timesIdentifier;
439     private:
440         std::unique_ptr<BuiltinNames> m_builtinNames;
441
442     public:
443         
444 #define JSC_IDENTIFIER_DECLARE_KEYWORD_NAME_GLOBAL(name) const Identifier name##Keyword;
445         JSC_COMMON_IDENTIFIERS_EACH_KEYWORD(JSC_IDENTIFIER_DECLARE_KEYWORD_NAME_GLOBAL)
446 #undef JSC_IDENTIFIER_DECLARE_KEYWORD_NAME_GLOBAL
447         
448 #define JSC_IDENTIFIER_DECLARE_PROPERTY_NAME_GLOBAL(name) const Identifier name;
449         JSC_COMMON_IDENTIFIERS_EACH_PROPERTY_NAME(JSC_IDENTIFIER_DECLARE_PROPERTY_NAME_GLOBAL)
450 #undef JSC_IDENTIFIER_DECLARE_PROPERTY_NAME_GLOBAL
451
452 #define JSC_IDENTIFIER_DECLARE_PRIVATE_WELL_KNOWN_SYMBOL_GLOBAL(name) const Identifier name##Symbol;
453         JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_WELL_KNOWN_SYMBOL(JSC_IDENTIFIER_DECLARE_PRIVATE_WELL_KNOWN_SYMBOL_GLOBAL)
454 #undef JSC_IDENTIFIER_DECLARE_PRIVATE_WELL_KNOWN_SYMBOL_GLOBAL
455
456         const Identifier* lookUpPrivateName(const Identifier&) const;
457         Identifier lookUpPublicName(const Identifier&) const;
458
459         // Callers of this method should make sure that identifiers given to this method 
460         // survive the lifetime of CommonIdentifiers and related VM.
461         JS_EXPORT_PRIVATE void appendExternalName(const Identifier& publicName, const Identifier& privateName);
462     };
463
464 } // namespace JSC