Revision: 18994
Author:   [email protected]
Date:     Fri Jan 31 14:05:55 2014 UTC
Log: A64: a smi can hold any signed integer, so we don't need a deferred tag method for it

BUG=none
[email protected], [email protected]
LOG=y

Review URL: https://codereview.chromium.org/151363002
http://code.google.com/p/v8/source/detail?r=18994

Modified:
 /branches/experimental/a64/src/a64/lithium-codegen-a64.cc
 /branches/experimental/a64/src/a64/lithium-codegen-a64.h

=======================================
--- /branches/experimental/a64/src/a64/lithium-codegen-a64.cc Fri Jan 31 13:49:43 2014 UTC +++ /branches/experimental/a64/src/a64/lithium-codegen-a64.cc Fri Jan 31 14:05:55 2014 UTC
@@ -4333,11 +4333,10 @@
 }


-void LCodeGen::DoDeferredNumberTagI(LInstruction* instr,
+void LCodeGen::DoDeferredNumberTagU(LInstruction* instr,
                                     LOperand* value,
                                     LOperand* temp1,
-                                    LOperand* temp2,
-                                    IntegerSignedness signedness) {
+                                    LOperand* temp2) {
   Label slow, convert_and_store;
   Register src = ToRegister32(value);
   Register dst = ToRegister(instr->result());
@@ -4375,12 +4374,7 @@
   // number.
   __ Bind(&convert_and_store);
   DoubleRegister dbl_scratch = double_scratch();
-  if (signedness == SIGNED_INT32) {
-    ASM_UNIMPLEMENTED_BREAK("DeferredNumberTagI - signed int32 case.");
-  } else {
-    ASSERT(signedness == UNSIGNED_INT32);
-    __ Ucvtf(dbl_scratch, src);
-  }
+  __ Ucvtf(dbl_scratch, src);
   __ Str(dbl_scratch, FieldMemOperand(dst, HeapNumber::kValueOffset));
 }

@@ -4391,11 +4385,10 @@
     DeferredNumberTagU(LCodeGen* codegen, LNumberTagU* instr)
         : LDeferredCode(codegen), instr_(instr) { }
     virtual void Generate() {
-      codegen()->DoDeferredNumberTagI(instr_,
+      codegen()->DoDeferredNumberTagU(instr_,
                                       instr_->value(),
                                       instr_->temp1(),
-                                      instr_->temp2(),
-                                      UNSIGNED_INT32);
+                                      instr_->temp2());
     }
     virtual LInstruction* instr() { return instr_; }
    private:
=======================================
--- /branches/experimental/a64/src/a64/lithium-codegen-a64.h Fri Jan 31 13:49:43 2014 UTC +++ /branches/experimental/a64/src/a64/lithium-codegen-a64.h Fri Jan 31 14:05:55 2014 UTC
@@ -166,11 +166,10 @@
                                Label* allocation_entry);

   enum IntegerSignedness { SIGNED_INT32, UNSIGNED_INT32 };
-  void DoDeferredNumberTagI(LInstruction* instr,
+  void DoDeferredNumberTagU(LInstruction* instr,
                             LOperand* value,
                             LOperand* temp1,
-                            LOperand* temp2,
-                            IntegerSignedness signedness);
+                            LOperand* temp2);
   void DoDeferredTaggedToI(LTaggedToI* instr,
                            LOperand* value,
                            LOperand* temp1,

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to