source: webkit/trunk/Source/JavaScriptCore/DerivedSources.make@ 88076

Last change on this file since 88076 was 88076, checked in by [email protected], 14 years ago

2011-06-03 Oliver Hunt <[email protected]>

Reviewed by Geoffrey Garen.

Improve keyword lookup
https://bugs.webkit.org/show_bug.cgi?id=61913

Rather than doing multiple hash lookups as we currently
do when trying to identify keywords we now use an
automatically generated decision tree (essentially it's
a hard coded patricia trie). We still use the regular
lookup table for the last few characters of an input as
this allows us to completely skip all bounds checks.

  • CMakeLists.txt:
  • DerivedSources.make:
  • DerivedSources.pro:
  • GNUmakefile.am:
  • JavaScriptCore.gyp/JavaScriptCore.gyp:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • KeywordLookupGenerator.py: Added.
  • make-generated-sources.sh:
  • parser/Lexer.cpp: (JSC::Lexer::internalShift): (JSC::Lexer::shift): (JSC::Lexer::parseIdentifier):
  • parser/Lexer.h:
  • Property svn:eol-style set to native
File size: 3.4 KB
Line 
1# Copyright (C) 2006, 2007, 2008, 2009, 2011 Apple Inc. All rights reserved.
2#
3# Redistribution and use in source and binary forms, with or without
4# modification, are permitted provided that the following conditions
5# are met:
6#
7# 1. Redistributions of source code must retain the above copyright
8# notice, this list of conditions and the following disclaimer.
9# 2. Redistributions in binary form must reproduce the above copyright
10# notice, this list of conditions and the following disclaimer in the
11# documentation and/or other materials provided with the distribution.
12# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
13# its contributors may be used to endorse or promote products derived
14# from this software without specific prior written permission.
15#
16# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
17# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
20# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
27VPATH = \
28 $(JavaScriptCore) \
29 $(JavaScriptCore)/parser \
30 $(JavaScriptCore)/docs \
31 $(JavaScriptCore)/runtime \
32 $(JavaScriptCore)/interpreter \
33 $(JavaScriptCore)/jit \
34#
35
36.PHONY : all
37all : \
38 ArrayConstructor.lut.h \
39 ArrayPrototype.lut.h \
40 BooleanPrototype.lut.h \
41 DateConstructor.lut.h \
42 DatePrototype.lut.h \
43 ErrorPrototype.lut.h \
44 HeaderDetection.h \
45 JSONObject.lut.h \
46 JavaScriptCore.JSVALUE32_64.exp \
47 JavaScriptCore.JSVALUE64.exp \
48 JSGlobalObject.lut.h \
49 KeywordLookup.h \
50 Lexer.lut.h \
51 MathObject.lut.h \
52 NumberConstructor.lut.h \
53 NumberPrototype.lut.h \
54 ObjectConstructor.lut.h \
55 ObjectPrototype.lut.h \
56 RegExpConstructor.lut.h \
57 RegExpPrototype.lut.h \
58 RegExpJitTables.h \
59 RegExpObject.lut.h \
60 StringConstructor.lut.h \
61 StringPrototype.lut.h \
62 docs/bytecode.html \
63#
64
65# lookup tables for classes
66
67%.lut.h: create_hash_table %.cpp
68 $^ -i > $@
69Lexer.lut.h: create_hash_table Keywords.table
70 $^ > $@
71
72docs/bytecode.html: make-bytecode-docs.pl Interpreter.cpp
73 perl $^ $@
74
75# character tables for Yarr
76
77RegExpJitTables.h: create_regex_tables
78 python $^ > $@
79
80KeywordLookup.h: KeywordLookupGenerator.py Keywords.table
81 python $^ > $@
82
83# export files
84
85JavaScriptCore.JSVALUE32_64.exp: JavaScriptCore.exp JavaScriptCore.JSVALUE32_64only.exp
86 cat $^ > $@
87
88JavaScriptCore.JSVALUE64.exp: JavaScriptCore.exp JavaScriptCore.JSVALUE64only.exp
89 cat $^ > $@
90
91
92# header detection
93
94ifeq ($(OS),MACOS)
95
96HeaderDetection.h : DerivedSources.make /System/Library/CoreServices/SystemVersion.plist
97 rm -f $@
98 echo "/* This is a generated file. Do not edit. */" > $@
99 if [ -f $(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders/pthread_machdep.h ]; then echo "#define HAVE_PTHREAD_MACHDEP_H 1" >> $@; else echo >> $@; fi
100
101else
102
103HeaderDetection.h :
104 echo > $@
105
106endif
Note: See TracBrowser for help on using the repository browser.