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

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

Autogenerate Opcode definitions
https://bugs.webkit.org/show_bug.cgi?id=94840

Reviewed by Gavin Barraclough.

Start the process of autogenerating the code emission for the bytecode.
We'll just start with automatic generation of the list of Opcodes as that
requires the actual definition of the opcodes, and the logic for parsing
them.

Due to some rather annoying dependency cycles, this initial version has
the OpcodeDefinitions.h file checked into the tree, although with some
work I hope to be able to fix that.

  • DerivedSources.make:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/Opcode.h: Include OpcodeDefinitions.h as our definitive source of info about the opcodes.
  • bytecode/OpcodeDefinitions.h: Added. Autogenerated file
  • bytecode/opcodes: Added. The new opcode definition file
  • opcode_definition_generator.py: Added.

(generateOpcodeDefinition):
(generate):

Module that generates the content for OpcodeDefinitions.h

  • opcode_generator.py: Added.

(printUsage):
(main):

Driver script

  • opcode_parser.py: Added. Simple parser for the opcode definitions.
  • Property svn:eol-style set to native
File size: 3.7 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 JSGlobalObject.lut.h \
47 KeywordLookup.h \
48 Lexer.lut.h \
49 MathObject.lut.h \
50 NamePrototype.lut.h \
51 NumberConstructor.lut.h \
52 NumberPrototype.lut.h \
53 ObjectConstructor.lut.h \
54 ObjectPrototype.lut.h \
55 RegExpConstructor.lut.h \
56 RegExpPrototype.lut.h \
57 RegExpJitTables.h \
58 RegExpObject.lut.h \
59 StringConstructor.lut.h \
60 StringPrototype.lut.h \
61 docs/bytecode.html \
62 udis86_itab.h \
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# Don't autogenerate these yet, as there are some dependency problems
84# interacting with the LLIntOffsetsExtractor
85# opcode_generator.py: opcode_definition_generator.py opcode_parser.py
86#
87# OpcodeDefinitions.h: opcode_generator.py | bytecode/opcodes
88# python $< -i $| -m definition -o $@
89
90# udis86 instruction tables
91
92udis86_itab.h: $(JavaScriptCore)/disassembler/udis86/itab.py $(JavaScriptCore)/disassembler/udis86/optable.xml
93 (PYTHONPATH=$(JavaScriptCore)/disassembler/udis86 python $(JavaScriptCore)/disassembler/udis86/itab.py $(JavaScriptCore)/disassembler/udis86/optable.xml || exit 1)
94
95# header detection
96
97ifeq ($(OS),MACOS)
98
99HeaderDetection.h : DerivedSources.make /System/Library/CoreServices/SystemVersion.plist
100 rm -f $@
101 echo "/* This is a generated file. Do not edit. */" > $@
102 if [ -f $(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders/pthread_machdep.h ]; then echo "#define HAVE_PTHREAD_MACHDEP_H 1" >> $@; else echo >> $@; fi
103
104else
105
106HeaderDetection.h :
107 echo > $@
108
109endif
Note: See TracBrowser for help on using the repository browser.