create_hash_table: allow empty tables
authorjfbastien@apple.com <jfbastien@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 19 Oct 2016 23:34:45 +0000 (23:34 +0000)
committerjfbastien@apple.com <jfbastien@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 19 Oct 2016 23:34:45 +0000 (23:34 +0000)
The Windows build was broken by because I added empty tables and Windows insists that empty tables are horrible. Put in dummy entries in that case.

create_hash_table: allow empty tables
https://bugs.webkit.org/show_bug.cgi?id=163701

Reviewed by Keith Miller.

* create_hash_table:

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

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/create_hash_table

index 454212d..b4c50e6 100644 (file)
@@ -1,5 +1,18 @@
 2016-10-19  JF Bastien  <jfbastien@apple.com>
 
+        create_hash_table: allow empty tables
+
+        The Windows build was broken by because I added empty tables and Windows insists that empty tables are horrible. Put in dummy entries in that case.
+
+        create_hash_table: allow empty tables
+        https://bugs.webkit.org/show_bug.cgi?id=163701
+
+        Reviewed by Keith Miller.
+
+        * create_hash_table:
+
+2016-10-19  JF Bastien  <jfbastien@apple.com>
+
         JavaScript WebAssembly API: baby steps
 
          - Expand WebAssembly constructors into their own files. This requires a lot of
index 1cb2e49..28df6e7 100755 (executable)
@@ -270,19 +270,31 @@ sub output() {
     print "\n";
     print "namespace JSC {\n";
     print "\n";
-    print "static const struct CompactHashIndex ${nameIndex}\[$compactSize\] = {\n";
-    for (my $i = 0; $i < $compactSize; $i++) {
-        my $T = -1;
-        if (defined($table[$i])) { $T = $table[$i]; }
-        my $L = -1;
-        if (defined($links[$i])) { $L = $links[$i]; }
-        print "    { $T, $L },\n";
+    if ($compactSize != 0) {
+        print "static const struct CompactHashIndex ${nameIndex}\[$compactSize\] = {\n";
+        for (my $i = 0; $i < $compactSize; $i++) {
+            my $T = -1;
+            if (defined($table[$i])) { $T = $table[$i]; }
+            my $L = -1;
+            if (defined($links[$i])) { $L = $links[$i]; }
+            print "    { $T, $L },\n";
+        }
+    } else {
+        # MSVC dislikes empty arrays.
+        print "static const struct CompactHashIndex ${nameIndex}\[1\] = {\n";
+        print "    { 0, 0 }\n";
     }
     print "};\n";
     print "\n";
 
     my $packedSize = scalar @keys;
-    print "static const struct HashTableValue ${nameEntries}\[$packedSize\] = {\n";
+    if ($packedSize != 0) {
+        print "static const struct HashTableValue ${nameEntries}\[$packedSize\] = {\n";
+    } else {
+        # MSVC dislikes empty arrays.
+        print "static const struct HashTableValue ${nameEntries}\[1\] = {\n";
+        print "    { nullptr, 0, NoIntrinsic, { 0, 0 } }\n";
+    }
     my $i = 0;
     foreach my $key (@keys) {
         my $firstValue = "";