laszlo.1.gombos@nokia.com | 32fb4ae | 2010-01-08 05:47:21 +0000 | [diff] [blame] | 1 | #! /usr/bin/perl -w |
| 2 | # |
| 3 | # Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies) |
eric@webkit.org | e8e340f | 2010-02-15 18:04:54 +0000 | [diff] [blame] | 4 | # Copyright (C) 2010 Patrick Gansterer <paroga@paroga.com> |
laszlo.1.gombos@nokia.com | 32fb4ae | 2010-01-08 05:47:21 +0000 | [diff] [blame] | 5 | # |
| 6 | # This library is free software; you can redistribute it and/or |
| 7 | # modify it under the terms of the GNU Library General Public |
| 8 | # License as published by the Free Software Foundation; either |
| 9 | # version 2 of the License, or (at your option) any later version. |
| 10 | # |
| 11 | # This library is distributed in the hope that it will be useful, |
| 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 14 | # Library General Public License for more details. |
| 15 | # |
| 16 | # You should have received a copy of the GNU Library General Public License |
| 17 | # along with this library; see the file COPYING.LIB. If not, write to |
| 18 | # the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
| 19 | # Boston, MA 02110-1301, USA. |
| 20 | |
| 21 | use strict; |
eric@webkit.org | e8e340f | 2010-02-15 18:04:54 +0000 | [diff] [blame] | 22 | use File::Basename; |
| 23 | use Getopt::Long; |
laszlo.1.gombos@nokia.com | 32fb4ae | 2010-01-08 05:47:21 +0000 | [diff] [blame] | 24 | |
paroga@webkit.org | 7d853f5 | 2011-01-21 04:58:20 +0000 | [diff] [blame] | 25 | my $usage = basename($0) . " --prefix prefix file"; |
eric@webkit.org | e8e340f | 2010-02-15 18:04:54 +0000 | [diff] [blame] | 26 | |
| 27 | my $rtype_template = quotemeta("#rtype#"); |
eric@webkit.org | e8e340f | 2010-02-15 18:04:54 +0000 | [diff] [blame] | 28 | my $op_template = quotemeta("#op#"); |
| 29 | |
eric@webkit.org | 671c425 | 2010-02-19 19:30:55 +0000 | [diff] [blame] | 30 | my $prefix; |
eric@webkit.org | e8e340f | 2010-02-15 18:04:54 +0000 | [diff] [blame] | 31 | my $file; |
| 32 | |
| 33 | my $getOptionsResult = GetOptions( |
paroga@webkit.org | 7d853f5 | 2011-01-21 04:58:20 +0000 | [diff] [blame] | 34 | 'prefix=s' => \$prefix |
eric@webkit.org | e8e340f | 2010-02-15 18:04:54 +0000 | [diff] [blame] | 35 | ); |
| 36 | |
| 37 | $file = $ARGV[0]; |
| 38 | |
eric@webkit.org | 671c425 | 2010-02-19 19:30:55 +0000 | [diff] [blame] | 39 | die "$usage\n" unless ($prefix and $file); |
laszlo.1.gombos@nokia.com | 32fb4ae | 2010-01-08 05:47:21 +0000 | [diff] [blame] | 40 | |
| 41 | my $stub_template = ""; |
commit-queue@webkit.org | d018810 | 2010-06-25 07:30:12 +0000 | [diff] [blame] | 42 | my $output_end = ""; |
laszlo.1.gombos@nokia.com | 32fb4ae | 2010-01-08 05:47:21 +0000 | [diff] [blame] | 43 | my $stub = ""; |
| 44 | |
| 45 | my $rtype = ""; |
| 46 | my $op = ""; |
| 47 | |
mitz@apple.com | 6cf57f0 | 2011-10-26 16:30:50 +0000 | [diff] [blame^] | 48 | print STDERR "Creating JIT stubs for $file \n"; |
laszlo.1.gombos@nokia.com | 32fb4ae | 2010-01-08 05:47:21 +0000 | [diff] [blame] | 49 | open(IN, $file) or die "No such file $file"; |
| 50 | |
| 51 | while ( $_ = <IN> ) { |
commit-queue@webkit.org | d018810 | 2010-06-25 07:30:12 +0000 | [diff] [blame] | 52 | if ( /^$prefix\_BEGIN\((.*)\)/ ) { |
| 53 | $stub = $1; |
commit-queue@webkit.org | d018810 | 2010-06-25 07:30:12 +0000 | [diff] [blame] | 54 | print $stub . "\n"; |
| 55 | } |
eric@webkit.org | 671c425 | 2010-02-19 19:30:55 +0000 | [diff] [blame] | 56 | if ( /^$prefix\((.*)\)/ ) { |
laszlo.1.gombos@nokia.com | 32fb4ae | 2010-01-08 05:47:21 +0000 | [diff] [blame] | 57 | $stub_template .= $1 . "\n"; |
| 58 | } |
commit-queue@webkit.org | d018810 | 2010-06-25 07:30:12 +0000 | [diff] [blame] | 59 | if ( /^$prefix\_END\((.*)\)/ ) { |
| 60 | $output_end .= $1 . "\n"; |
| 61 | } |
laszlo.1.gombos@nokia.com | 32fb4ae | 2010-01-08 05:47:21 +0000 | [diff] [blame] | 62 | if ( /^DEFINE_STUB_FUNCTION\((.*), (.*)\)/ ) { |
| 63 | $stub = $stub_template; |
| 64 | $rtype = quotemeta($1); |
| 65 | $op = quotemeta($2); |
laszlo.1.gombos@nokia.com | 32fb4ae | 2010-01-08 05:47:21 +0000 | [diff] [blame] | 66 | $stub =~ s/$rtype_template/$rtype/g; |
| 67 | $stub =~ s/$op_template/$op/g; |
| 68 | $stub =~ s/\\\*/\*/g; |
| 69 | print $stub; |
| 70 | } |
| 71 | } |
| 72 | |
commit-queue@webkit.org | d018810 | 2010-06-25 07:30:12 +0000 | [diff] [blame] | 73 | print $output_end; |
| 74 | |
laszlo.1.gombos@nokia.com | 32fb4ae | 2010-01-08 05:47:21 +0000 | [diff] [blame] | 75 | close(IN); |