[crankshaft] Properly optimize %_ToObject.
authorbmeurer <bmeurer@chromium.org>
Mon, 10 Aug 2015 12:07:11 +0000 (05:07 -0700)
committerCommit bot <commit-bot@chromium.org>
Mon, 10 Aug 2015 12:07:27 +0000 (12:07 +0000)
R=yangguo@chromium.org
BUG=chromium:516423
LOG=n

Review URL: https://codereview.chromium.org/1277153003

Cr-Commit-Position: refs/heads/master@{#30088}

src/hydrogen.cc
src/hydrogen.h

index 794a38b..404cfa7 100644 (file)
@@ -12100,6 +12100,15 @@ void HOptimizedGraphBuilder::GenerateIsObject(CallRuntime* call) {
 }
 
 
+void HOptimizedGraphBuilder::GenerateToObject(CallRuntime* call) {
+  DCHECK_EQ(1, call->arguments()->length());
+  CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
+  HValue* value = Pop();
+  HValue* result = BuildToObject(value);
+  return ast_context()->ReturnValue(result);
+}
+
+
 void HOptimizedGraphBuilder::GenerateIsJSProxy(CallRuntime* call) {
   DCHECK(call->arguments()->length() == 1);
   CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
index 04db714..0790d74 100644 (file)
@@ -2197,6 +2197,7 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor {
   F(TwoByteSeqStringSetChar)           \
   F(ObjectEquals)                      \
   F(IsObject)                          \
+  F(ToObject)                          \
   F(IsFunction)                        \
   F(IsUndetectableObject)              \
   F(IsSpecObject)                      \