Extend create_hash_table to specify Intrinsic
authorutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Jan 2017 23:29:26 +0000 (23:29 +0000)
committerutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Jan 2017 23:29:26 +0000 (23:29 +0000)
https://bugs.webkit.org/show_bug.cgi?id=167505

Reviewed by Sam Weinig.

This patch extends create_hash_table to specify Intrinsic.
We can set Intrinsic in the static property table definition
in runtime/XXX.h.

And drop the adhoc code for String.fromCharCode in create_hash_table.

* create_hash_table:
* runtime/StringConstructor.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@211306 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/create_hash_table
Source/JavaScriptCore/runtime/StringConstructor.cpp

index 0bf28da..1375ee6 100644 (file)
@@ -1,3 +1,19 @@
+2017-01-27  Yusuke Suzuki  <utatane.tea@gmail.com>
+
+        Extend create_hash_table to specify Intrinsic
+        https://bugs.webkit.org/show_bug.cgi?id=167505
+
+        Reviewed by Sam Weinig.
+
+        This patch extends create_hash_table to specify Intrinsic.
+        We can set Intrinsic in the static property table definition
+        in runtime/XXX.h.
+
+        And drop the adhoc code for String.fromCharCode in create_hash_table.
+
+        * create_hash_table:
+        * runtime/StringConstructor.cpp:
+
 2017-01-27  Filip Pizlo  <fpizlo@apple.com>
 
         scanExternalRememberedSet needs to mergeIfNecessary
index 28df6e7..d020f02 100755 (executable)
@@ -76,11 +76,12 @@ while (<IN>) {
         $includeBuiltin = 0;
 
         $inside = 0;
-    } elsif (/^(\S+)\s*(\S+)\s*([\w\|]*)\s*(\w*)\s*$/ && $inside) {
+    } elsif (/^(\S+)\s*(\S+)\s*([\w\|]*)\s*(\w*)\s*(\w*)\s*$/ && $inside) {
         my $key = $1;
         my $val = $2;
         my $att = $3;
         my $param = $4;
+        my $intrinsic = $5;
 
         push(@keys, $key);
         push(@attrs, length($att) > 0 ? $att : "0");
@@ -90,7 +91,7 @@ while (<IN>) {
         }
 
         if ($att =~ m/Function/) {
-            push(@values, { "type" => "Function", "function" => $val, "params" => (length($param) ? $param : "") });
+            push(@values, { "type" => "Function", "function" => $val, "params" => (length($param) ? $param : ""), "intrinsic" => (length($intrinsic) ? $intrinsic : "NoIntrinsic") });
             #printf STDERR "WARNING: Number of arguments missing for $key/$val\n" if (length($param) == 0);
         } elsif ($att =~ m/Accessor/) {
             my $get = $val;
@@ -301,11 +302,13 @@ sub output() {
         my $secondValue = "";
         my $firstCastStr = "";
         my $secondCastStr = "";
+        my $intrinsic = "NoIntrinsic";
 
         if ($values[$i]{"type"} eq "Function") {
             $firstCastStr = "static_cast<NativeFunction>";
             $firstValue = $values[$i]{"function"};
             $secondValue = $values[$i]{"params"};
+            $intrinsic = $values[$i]{"intrinsic"};
         } elsif ($values[$i]{"type"} eq "Accessor") {
             $firstCastStr = "static_cast<NativeFunction>";
             $secondCastStr = "static_cast<NativeFunction>";
@@ -329,13 +332,6 @@ sub output() {
             $secondValue = "0";
         }
 
-        my $intrinsic = "NoIntrinsic";
-        $intrinsic = "FromCharCodeIntrinsic" if ($key eq "fromCharCode");
-        if ($name eq "arrayPrototypeTable") {
-            $intrinsic = "ArrayPushIntrinsic" if ($key eq "push");
-            $intrinsic = "ArrayPopIntrinsic" if ($key eq "pop");
-        }
-
         if ($values[$i]{"type"} eq "Function" && $firstValue eq "JSBuiltin")  {
             my $tableHead = $name;
             $tableHead =~ s/Table$//;
index ae267b0..9df4c92 100644 (file)
@@ -44,7 +44,7 @@ const ClassInfo StringConstructor::s_info = { "Function", &InternalFunction::s_i
 
 /* Source for StringConstructor.lut.h
 @begin stringConstructorTable
-  fromCharCode          stringFromCharCode         DontEnum|Function 1
+  fromCharCode          stringFromCharCode         DontEnum|Function 1 FromCharCodeIntrinsic
   fromCodePoint         stringFromCodePoint        DontEnum|Function 1
   raw                   JSBuiltin                  DontEnum|Function 1
 @end