Revision: 6517
Author: [email protected]
Date: Thu Jan 27 08:41:43 2011
Log: Implement DoGlobalReceiver and DoCheckFunction lithium instructions on x64


Review URL: http://codereview.chromium.org/6277024
http://code.google.com/p/v8/source/detail?r=6517

Modified:
 /branches/bleeding_edge/src/x64/lithium-codegen-x64.cc
 /branches/bleeding_edge/src/x64/lithium-x64.cc

=======================================
--- /branches/bleeding_edge/src/x64/lithium-codegen-x64.cc Thu Jan 27 05:02:48 2011 +++ /branches/bleeding_edge/src/x64/lithium-codegen-x64.cc Thu Jan 27 08:41:43 2011
@@ -1517,7 +1517,9 @@


 void LCodeGen::DoGlobalReceiver(LGlobalReceiver* instr) {
-  Abort("Unimplemented: %s", "DoGlobalReceiver");
+  Register result = ToRegister(instr->result());
+ __ movq(result, Operand(rsi, Context::SlotOffset(Context::GLOBAL_INDEX))); + __ movq(result, FieldOperand(result, GlobalObject::kGlobalReceiverOffset));
 }


@@ -1820,7 +1822,10 @@


 void LCodeGen::DoCheckFunction(LCheckFunction* instr) {
-  Abort("Unimplemented: %s", "DoCheckFunction");
+  ASSERT(instr->InputAt(0)->IsRegister());
+  Register reg = ToRegister(instr->InputAt(0));
+  __ Cmp(reg, instr->hydrogen()->target());
+  DeoptimizeIf(not_equal, instr->environment());
 }


=======================================
--- /branches/bleeding_edge/src/x64/lithium-x64.cc      Thu Jan 27 05:02:48 2011
+++ /branches/bleeding_edge/src/x64/lithium-x64.cc      Thu Jan 27 08:41:43 2011
@@ -1055,8 +1055,7 @@


 LInstruction* LChunkBuilder::DoGlobalReceiver(HGlobalReceiver* instr) {
-  Abort("Unimplemented: %s", "DoGlobalReceiver");
-  return NULL;
+  return DefineAsRegister(new LGlobalReceiver);
 }


@@ -1422,8 +1421,8 @@


 LInstruction* LChunkBuilder::DoCheckFunction(HCheckFunction* instr) {
-  Abort("Unimplemented: %s", "DoCheckFunction");
-  return NULL;
+  LOperand* value = UseRegisterAtStart(instr->value());
+  return AssignEnvironment(new LCheckFunction(value));
 }


--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to