{"action":"created","comment":{"url":"https://api.github.com/repos/scala-js/scala-js/pulls/comments/42841090","id":42841090,"diff_hunk":"@@ -55,531 +121,558 @@ final class RuntimeLong(\n   def floatValue(): Float = toFloat\n   def doubleValue(): Double = toDouble\n \n-  // java.lang.Comparable + overload taking scala.Long\n-  def compareTo(that: RuntimeLong): Int =\n-    if (this equals that) 0 else if (this > that) 1 else -1\n+  // Comparisons and java.lang.Comparable interface\n+\n+  def compareTo(b: RuntimeLong): Int = {\n+    val ahi = a.hi\n+    val bhi = b.hi\n+    if (ahi == bhi) {\n+      val alo = a.lo\n+      val blo = b.lo\n+      if (alo == blo) 0\n+      else if (inlineUnsignedInt_<(alo, blo)) -1\n+      else 1\n+    } else {\n+      if (ahi < bhi) -1\n+      else 1\n+    }\n+  }\n+\n   def compareTo(that: java.lang.Long): Int =\n     compareTo(that.asInstanceOf[RuntimeLong])\n \n-  // scalastyle:off disallow.space.before.token\n-  def unary_~ : RuntimeLong = masked(~x.l, ~x.m, ~x.h)\n-  def unary_+ : RuntimeLong = x\n-  def unary_- : RuntimeLong = {\n-    val neg0 = (~x.l + 1) & MASK\n-    val neg1 = (~x.m + (if (neg0 == 0) 1 else 0)) & MASK\n-    val neg2 = (~x.h + (if (neg0 == 0 && neg1 == 0) 1 else 0)) & MASK_2\n-    new RuntimeLong(neg0, neg1, neg2)\n+  @inline\n+  private def inline_equals(b: RuntimeLong): Boolean =\n+    a.lo == b.lo && a.hi == b.hi\n+\n+  def equals(b: RuntimeLong): Boolean =\n+    inline_equals(b)\n+\n+  def notEquals(b: RuntimeLong): Boolean =\n+    !inline_equals(b)\n+\n+  def <(b: RuntimeLong): Boolean = {\n+    val ahi = a.hi\n+    val bhi = b.hi\n+    if (ahi == bhi) inlineUnsignedInt_<(a.lo, b.lo)\n+    else ahi < bhi\n   }\n-  // scalastyle:on disallow.space.before.token\n \n-  def +(y: String): String = x.toString + y\n+  def <=(b: RuntimeLong): Boolean = {\n+    val ahi = a.hi\n+    val bhi = b.hi\n+    if (ahi == bhi) inlineUnsignedInt_<=(a.lo, b.lo)\n+    else ahi < bhi\n+  }\n \n-  def <<(n_in: Int): RuntimeLong = {\n-    /* crop MSB. Note: This will cause (2L << 65 == 2L << 1)\n-     * apparently this is as specified\n+  def >(b: RuntimeLong): Boolean = {\n+    /* Work around https://code.google.com/p/v8/issues/detail?id=3304\n+     * 0x7fffffff > 0x80000000 is broken, so use < instead.\n+     * This happens when comparing MaxValue to MinValue.\n      */\n-    val n = n_in & 63\n-\n-    if (n < BITS) {\n-      val remBits = BITS - n\n-      masked(x.l << n,\n-             (x.m << n) | (x.l >> remBits),\n-             (x.h << n) | (x.m >> remBits))\n-    } else if (n < BITS01) {\n-      val shfBits = n - BITS\n-      val remBits = BITS01 - n\n-      masked(0, x.l << shfBits, (x.m << shfBits) | (x.l >> remBits))\n-    } else {\n-      masked(0, 0, x.l << (n - BITS01))\n-    }\n+    val ahi = a.hi\n+    val bhi = b.hi\n+    if (ahi == bhi) inlineUnsignedInt_>(a.lo, b.lo)\n+    else bhi < ahi // workaround here\n+  }\n \n+  def >=(b: RuntimeLong): Boolean = {\n+    /* Work around https://code.google.com/p/v8/issues/detail?id=3304\n+     * 0x7fffffff > 0x80000000 is broken, so use < instead.\n+     * This happens when comparing MaxValue to MinValue.\n+     */\n+    val ahi = a.hi\n+    val bhi = b.hi\n+    if (ahi == bhi) inlineUnsignedInt_>=(a.lo, b.lo)\n+    else bhi < ahi // workaround here\n   }\n \n-  /**\n-   * logical right shift\n-   */\n-  def >>>(n_in: Int): RuntimeLong = {\n-    val n = n_in & 63\n-    if (n < BITS) {\n-      val remBits = BITS - n\n-      masked((x.l >> n) | (x.m << remBits),\n-             // FIXME is this really >> and not >>>??\n-             (x.m >> n) | (x.h << remBits),\n-             x.h >>> n)\n-    } else if (n < BITS01) {\n-      val shfBits = n - BITS\n-      val remBits = BITS01 - n\n-             // FIXME is this really >> and not >>>??\n-      masked((x.m >> shfBits) | (x.h << remBits),\n-             x.h >>> shfBits, 0)\n-    } else {\n-      masked(x.h >>> (n - BITS01), 0, 0)\n-    }\n+  // Bitwise operations\n+\n+  def unary_~ : RuntimeLong = // scalastyle:ignore\n+    new RuntimeLong(~lo, ~hi)\n+\n+  def |(b: RuntimeLong): RuntimeLong =\n+    new RuntimeLong(a.lo | b.lo, a.hi | b.hi)\n+\n+  def &(b: RuntimeLong): RuntimeLong =\n+    new RuntimeLong(a.lo & b.lo, a.hi & b.hi)\n+\n+  def ^(b: RuntimeLong): RuntimeLong =\n+    new RuntimeLong(a.lo ^ b.lo, a.hi ^ b.hi)\n+\n+  // Shifts\n+\n+  /** Shift left */\n+  def <<(n0: Int): RuntimeLong = {\n+    val n = n0 & 63\n+    val lo = this.lo\n+\n+    if (n == 0) this\n+    else if (n < 32) new RuntimeLong(lo << n, (lo >>> -n) | (hi << n))\n+    else new RuntimeLong(0, lo << n)\n   }\n \n-  /**\n-   * arithmetic right shift\n-   */\n-  def >>(n_in: Int): RuntimeLong = {\n-    val n = n_in & 63;\n-\n-    // Sign extend x.h\n-    val negative = (x.h & SIGN_BIT_VALUE) != 0\n-    val xh = if (negative) x.h | ~MASK_2 else x.h\n-\n-    if (n < BITS) {\n-      val remBits = BITS - n\n-      // FIXME IMHO the first two >> should be >>>\n-      masked((x.l >> n) | (x.m << remBits),\n-             (x.m >> n) | (xh  << remBits),\n-             xh >> n)\n-    } else if (n < BITS01) {\n-      val shfBits = n - BITS\n-      val remBits = BITS01 - n\n-      // FIXME IMHO the first >> should be >>>\n-      masked((x.m >> shfBits) | (xh << remBits),\n-              xh  >> shfBits,\n-             if (negative) MASK_2 else 0)\n-    } else {\n-      masked(xh >> (n - BITS01),\n-             if (negative) MASK   else 0,\n-             if (negative) MASK_2 else 0)\n-    }\n+  @inline\n+  private def inline_<<(lo: Int, hi: Int, n: Int): (Int, Int) = {\n+    if (n == 0) (lo, hi)\n+    else if (n < 32) (lo << n, (lo >>> -n) | (hi << n))\n+    else (0, lo << n)\n+  }\n+\n+  /** Logical shift right */\n+  def >>>(n0: Int): RuntimeLong = {\n+    val n = n0 & 63\n+    val hi = this.hi\n \n+    if (n == 0) this\n+    else if (n < 32) new RuntimeLong((lo >>> n) | (hi << -n), hi >>> n)\n+    else new RuntimeLong(hi >>> n, 0)\n   }\n \n-  def equals(y: RuntimeLong): Boolean =\n-    x.l == y.l && x.m == y.m && x.h == y.h\n+  @inline\n+  private def inline_>>>(lo: Int, hi: Int, n: Int): (Int, Int) = {\n+    if (n == 0) (lo, hi)\n+    else if (n < 32) ((lo >>> n) | (hi << -n), hi >>> n)\n+    else (hi >>> n, 0)\n+  }\n \n-  override def equals(that: Any): Boolean = that match {\n-    case y: RuntimeLong => x.equals(y)\n-    case _ => false\n+  /** Arithmetic shift right */\n+  def >>(n0: Int): RuntimeLong = {\n+    val n = n0 & 63\n+    val hi = this.hi\n+\n+    if (n == 0) this\n+    else if (n < 32) new RuntimeLong((lo >>> n) | (hi << -n), hi >> n)\n+    else new RuntimeLong(hi >> n, hi >> 31)\n   }\n \n-  def notEquals(that: RuntimeLong): Boolean = !equals(that)\n+  // Arithmetic operations\n+\n+  def unary_- : RuntimeLong = // scalastyle:ignore\n+    inlineLongUnary_-(lo, hi)\n+\n+  @inline\n+  private def inline_abs(lo: Int, hi: Int): (Boolean, Int, Int) = {\n+    val neg = hi < 0\n+    var absLo = lo\n+    var absHi = hi\n+    if (neg) {\n+      absLo = -lo\n+      absHi = if (lo != 0) ~hi else -hi\n+    }\n+    (neg, absLo, absHi)\n+  }\n \n-  override def hashCode(): Int = {\n-    (this ^ (this >>> 32)).toInt\n+  def +(b: RuntimeLong): RuntimeLong = {\n+    val alo = a.lo\n+    val blo = b.lo\n+    val lo = alo + blo\n+    val hi = a.hi + b.hi + (if (inlineUnsignedInt_<(lo, alo)) 1 else 0)\n+    new RuntimeLong(lo, hi)","path":"library/src/main/scala/scala/scalajs/runtime/RuntimeLong.scala","position":397,"original_position":397,"commit_id":"e604122e7993a4d334700f25ab1825e69461adc3","original_commit_id":"e604122e7993a4d334700f25ab1825e69461adc3","user":{"login":"gzm0","id":1140323,"avatar_url":"https://avatars.githubusercontent.com/u/1140323?v=3","gravatar_id":"","url":"https://api.github.com/users/gzm0","html_url":"https://github.com/gzm0","followers_url":"https://api.github.com/users/gzm0/followers","following_url":"https://api.github.com/users/gzm0/following{/other_user}","gists_url":"https://api.github.com/users/gzm0/gists{/gist_id}","starred_url":"https://api.github.com/users/gzm0/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gzm0/subscriptions","organizations_url":"https://api.github.com/users/gzm0/orgs","repos_url":"https://api.github.com/users/gzm0/repos","events_url":"https://api.github.com/users/gzm0/events{/privacy}","received_events_url":"https://api.github.com/users/gzm0/received_events","type":"User","site_admin":false},"body":"Now: Why don't you use `inline_+` here?","created_at":"2015-10-23T07:59:06Z","updated_at":"2015-10-23T07:59:06Z","html_url":"https://github.com/scala-js/scala-js/pull/1962#discussion_r42841090","pull_request_url":"https://api.github.com/repos/scala-js/scala-js/pulls/1962","_links":{"self":{"href":"https://api.github.com/repos/scala-js/scala-js/pulls/comments/42841090"},"html":{"href":"https://github.com/scala-js/scala-js/pull/1962#discussion_r42841090"},"pull_request":{"href":"https://api.github.com/repos/scala-js/scala-js/pulls/1962"}}},"pull_request":{"url":"https://api.github.com/repos/scala-js/scala-js/pulls/1962","id":48393255,"html_url":"https://github.com/scala-js/scala-js/pull/1962","diff_url":"https://github.com/scala-js/scala-js/pull/1962.diff","patch_url":"https://github.com/scala-js/scala-js/pull/1962.patch","issue_url":"https://api.github.com/repos/scala-js/scala-js/issues/1962","number":1962,"state":"open","locked":false,"title":"Faster implementation of RuntimeLong","user":{"login":"sjrd","id":535934,"avatar_url":"https://avatars.githubusercontent.com/u/535934?v=3","gravatar_id":"","url":"https://api.github.com/users/sjrd","html_url":"https://github.com/sjrd","followers_url":"https://api.github.com/users/sjrd/followers","following_url":"https://api.github.com/users/sjrd/following{/other_user}","gists_url":"https://api.github.com/users/sjrd/gists{/gist_id}","starred_url":"https://api.github.com/users/sjrd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sjrd/subscriptions","organizations_url":"https://api.github.com/users/sjrd/orgs","repos_url":"https://api.github.com/users/sjrd/repos","events_url":"https://api.github.com/users/sjrd/events{/privacy}","received_events_url":"https://api.github.com/users/sjrd/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-10-21T21:54:18Z","updated_at":"2015-10-23T07:59:07Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7bc110801a80a1495bf7e68eb73498127e080859","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/scala-js/scala-js/pulls/1962/commits","review_comments_url":"https://api.github.com/repos/scala-js/scala-js/pulls/1962/comments","review_comment_url":"https://api.github.com/repos/scala-js/scala-js/pulls/comments{/number}","comments_url":"https://api.github.com/repos/scala-js/scala-js/issues/1962/comments","statuses_url":"https://api.github.com/repos/scala-js/scala-js/statuses/e604122e7993a4d334700f25ab1825e69461adc3","head":{"label":"sjrd:faster-longs","ref":"faster-longs","sha":"e604122e7993a4d334700f25ab1825e69461adc3","user":{"login":"sjrd","id":535934,"avatar_url":"https://avatars.githubusercontent.com/u/535934?v=3","gravatar_id":"","url":"https://api.github.com/users/sjrd","html_url":"https://github.com/sjrd","followers_url":"https://api.github.com/users/sjrd/followers","following_url":"https://api.github.com/users/sjrd/following{/other_user}","gists_url":"https://api.github.com/users/sjrd/gists{/gist_id}","starred_url":"https://api.github.com/users/sjrd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sjrd/subscriptions","organizations_url":"https://api.github.com/users/sjrd/orgs","repos_url":"https://api.github.com/users/sjrd/repos","events_url":"https://api.github.com/users/sjrd/events{/privacy}","received_events_url":"https://api.github.com/users/sjrd/received_events","type":"User","site_admin":false},"repo":{"id":8660284,"name":"scala-js","full_name":"sjrd/scala-js","owner":{"login":"sjrd","id":535934,"avatar_url":"https://avatars.githubusercontent.com/u/535934?v=3","gravatar_id":"","url":"https://api.github.com/users/sjrd","html_url":"https://github.com/sjrd","followers_url":"https://api.github.com/users/sjrd/followers","following_url":"https://api.github.com/users/sjrd/following{/other_user}","gists_url":"https://api.github.com/users/sjrd/gists{/gist_id}","starred_url":"https://api.github.com/users/sjrd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sjrd/subscriptions","organizations_url":"https://api.github.com/users/sjrd/orgs","repos_url":"https://api.github.com/users/sjrd/repos","events_url":"https://api.github.com/users/sjrd/events{/privacy}","received_events_url":"https://api.github.com/users/sjrd/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/sjrd/scala-js","description":"Scala.js, a Scala to JavaScript compiler","fork":true,"url":"https://api.github.com/repos/sjrd/scala-js","forks_url":"https://api.github.com/repos/sjrd/scala-js/forks","keys_url":"https://api.github.com/repos/sjrd/scala-js/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sjrd/scala-js/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sjrd/scala-js/teams","hooks_url":"https://api.github.com/repos/sjrd/scala-js/hooks","issue_events_url":"https://api.github.com/repos/sjrd/scala-js/issues/events{/number}","events_url":"https://api.github.com/repos/sjrd/scala-js/events","assignees_url":"https://api.github.com/repos/sjrd/scala-js/assignees{/user}","branches_url":"https://api.github.com/repos/sjrd/scala-js/branches{/branch}","tags_url":"https://api.github.com/repos/sjrd/scala-js/tags","blobs_url":"https://api.github.com/repos/sjrd/scala-js/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sjrd/scala-js/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sjrd/scala-js/git/refs{/sha}","trees_url":"https://api.github.com/repos/sjrd/scala-js/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sjrd/scala-js/statuses/{sha}","languages_url":"https://api.github.com/repos/sjrd/scala-js/languages","stargazers_url":"https://api.github.com/repos/sjrd/scala-js/stargazers","contributors_url":"https://api.github.com/repos/sjrd/scala-js/contributors","subscribers_url":"https://api.github.com/repos/sjrd/scala-js/subscribers","subscription_url":"https://api.github.com/repos/sjrd/scala-js/subscription","commits_url":"https://api.github.com/repos/sjrd/scala-js/commits{/sha}","git_commits_url":"https://api.github.com/repos/sjrd/scala-js/git/commits{/sha}","comments_url":"https://api.github.com/repos/sjrd/scala-js/comments{/number}","issue_comment_url":"https://api.github.com/repos/sjrd/scala-js/issues/comments{/number}","contents_url":"https://api.github.com/repos/sjrd/scala-js/contents/{+path}","compare_url":"https://api.github.com/repos/sjrd/scala-js/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sjrd/scala-js/merges","archive_url":"https://api.github.com/repos/sjrd/scala-js/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sjrd/scala-js/downloads","issues_url":"https://api.github.com/repos/sjrd/scala-js/issues{/number}","pulls_url":"https://api.github.com/repos/sjrd/scala-js/pulls{/number}","milestones_url":"https://api.github.com/repos/sjrd/scala-js/milestones{/number}","notifications_url":"https://api.github.com/repos/sjrd/scala-js/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sjrd/scala-js/labels{/name}","releases_url":"https://api.github.com/repos/sjrd/scala-js/releases{/id}","created_at":"2013-03-08T21:32:59Z","updated_at":"2015-07-30T04:16:29Z","pushed_at":"2015-10-22T14:35:06Z","git_url":"git://github.com/sjrd/scala-js.git","ssh_url":"git@github.com:sjrd/scala-js.git","clone_url":"https://github.com/sjrd/scala-js.git","svn_url":"https://github.com/sjrd/scala-js","homepage":"http://www.scala-js.org/","size":14459,"stargazers_count":12,"watchers_count":12,"language":"Scala","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":12,"default_branch":"master"}},"base":{"label":"scala-js:master","ref":"master","sha":"43aedf33b2e77684a7c35f17091a48362a73bd2f","user":{"login":"scala-js","id":6039724,"avatar_url":"https://avatars.githubusercontent.com/u/6039724?v=3","gravatar_id":"","url":"https://api.github.com/users/scala-js","html_url":"https://github.com/scala-js","followers_url":"https://api.github.com/users/scala-js/followers","following_url":"https://api.github.com/users/scala-js/following{/other_user}","gists_url":"https://api.github.com/users/scala-js/gists{/gist_id}","starred_url":"https://api.github.com/users/scala-js/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scala-js/subscriptions","organizations_url":"https://api.github.com/users/scala-js/orgs","repos_url":"https://api.github.com/users/scala-js/repos","events_url":"https://api.github.com/users/scala-js/events{/privacy}","received_events_url":"https://api.github.com/users/scala-js/received_events","type":"Organization","site_admin":false},"repo":{"id":8272315,"name":"scala-js","full_name":"scala-js/scala-js","owner":{"login":"scala-js","id":6039724,"avatar_url":"https://avatars.githubusercontent.com/u/6039724?v=3","gravatar_id":"","url":"https://api.github.com/users/scala-js","html_url":"https://github.com/scala-js","followers_url":"https://api.github.com/users/scala-js/followers","following_url":"https://api.github.com/users/scala-js/following{/other_user}","gists_url":"https://api.github.com/users/scala-js/gists{/gist_id}","starred_url":"https://api.github.com/users/scala-js/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scala-js/subscriptions","organizations_url":"https://api.github.com/users/scala-js/orgs","repos_url":"https://api.github.com/users/scala-js/repos","events_url":"https://api.github.com/users/scala-js/events{/privacy}","received_events_url":"https://api.github.com/users/scala-js/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/scala-js/scala-js","description":"Scala.js, the Scala to JavaScript compiler","fork":false,"url":"https://api.github.com/repos/scala-js/scala-js","forks_url":"https://api.github.com/repos/scala-js/scala-js/forks","keys_url":"https://api.github.com/repos/scala-js/scala-js/keys{/key_id}","collaborators_url":"https://api.github.com/repos/scala-js/scala-js/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/scala-js/scala-js/teams","hooks_url":"https://api.github.com/repos/scala-js/scala-js/hooks","issue_events_url":"https://api.github.com/repos/scala-js/scala-js/issues/events{/number}","events_url":"https://api.github.com/repos/scala-js/scala-js/events","assignees_url":"https://api.github.com/repos/scala-js/scala-js/assignees{/user}","branches_url":"https://api.github.com/repos/scala-js/scala-js/branches{/branch}","tags_url":"https://api.github.com/repos/scala-js/scala-js/tags","blobs_url":"https://api.github.com/repos/scala-js/scala-js/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/scala-js/scala-js/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/scala-js/scala-js/git/refs{/sha}","trees_url":"https://api.github.com/repos/scala-js/scala-js/git/trees{/sha}","statuses_url":"https://api.github.com/repos/scala-js/scala-js/statuses/{sha}","languages_url":"https://api.github.com/repos/scala-js/scala-js/languages","stargazers_url":"https://api.github.com/repos/scala-js/scala-js/stargazers","contributors_url":"https://api.github.com/repos/scala-js/scala-js/contributors","subscribers_url":"https://api.github.com/repos/scala-js/scala-js/subscribers","subscription_url":"https://api.github.com/repos/scala-js/scala-js/subscription","commits_url":"https://api.github.com/repos/scala-js/scala-js/commits{/sha}","git_commits_url":"https://api.github.com/repos/scala-js/scala-js/git/commits{/sha}","comments_url":"https://api.github.com/repos/scala-js/scala-js/comments{/number}","issue_comment_url":"https://api.github.com/repos/scala-js/scala-js/issues/comments{/number}","contents_url":"https://api.github.com/repos/scala-js/scala-js/contents/{+path}","compare_url":"https://api.github.com/repos/scala-js/scala-js/compare/{base}...{head}","merges_url":"https://api.github.com/repos/scala-js/scala-js/merges","archive_url":"https://api.github.com/repos/scala-js/scala-js/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/scala-js/scala-js/downloads","issues_url":"https://api.github.com/repos/scala-js/scala-js/issues{/number}","pulls_url":"https://api.github.com/repos/scala-js/scala-js/pulls{/number}","milestones_url":"https://api.github.com/repos/scala-js/scala-js/milestones{/number}","notifications_url":"https://api.github.com/repos/scala-js/scala-js/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/scala-js/scala-js/labels{/name}","releases_url":"https://api.github.com/repos/scala-js/scala-js/releases{/id}","created_at":"2013-02-18T16:33:55Z","updated_at":"2015-10-23T03:56:05Z","pushed_at":"2015-10-23T03:58:04Z","git_url":"git://github.com/scala-js/scala-js.git","ssh_url":"git@github.com:scala-js/scala-js.git","clone_url":"https://github.com/scala-js/scala-js.git","svn_url":"https://github.com/scala-js/scala-js","homepage":"http://www.scala-js.org/","size":18039,"stargazers_count":1887,"watchers_count":1887,"language":"Scala","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":168,"mirror_url":null,"open_issues_count":74,"forks":168,"open_issues":74,"watchers":1887,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/scala-js/scala-js/pulls/1962"},"html":{"href":"https://github.com/scala-js/scala-js/pull/1962"},"issue":{"href":"https://api.github.com/repos/scala-js/scala-js/issues/1962"},"comments":{"href":"https://api.github.com/repos/scala-js/scala-js/issues/1962/comments"},"review_comments":{"href":"https://api.github.com/repos/scala-js/scala-js/pulls/1962/comments"},"review_comment":{"href":"https://api.github.com/repos/scala-js/scala-js/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/scala-js/scala-js/pulls/1962/commits"},"statuses":{"href":"https://api.github.com/repos/scala-js/scala-js/statuses/e604122e7993a4d334700f25ab1825e69461adc3"}}}}