Reviewers: Mads Ager, Søren Gjesse, Karl Klose,
Description:
Implement DoCallKeyed for arm lithium compiler.
Per the LChunkBuilder::DoCallKeyed the key value is placed into r2 where the
KeyedCallIC expects it already so, inspired by the ia32 implementation and
the
DoCallNamed this code is all that is required.
Thank you!
Martin
Please review this at http://codereview.chromium.org/6139002/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/arm/lithium-codegen-arm.cc
Index: src/arm/lithium-codegen-arm.cc
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc
index
e6942fada14f66396ffcf32e43e4b5e60ab09868..ff260b59cd255c8ff2035775f17602f74a077a1a
100644
--- a/src/arm/lithium-codegen-arm.cc
+++ b/src/arm/lithium-codegen-arm.cc
@@ -1812,7 +1812,12 @@ void
LCodeGen::DoUnaryMathOperation(LUnaryMathOperation* instr) {
void LCodeGen::DoCallKeyed(LCallKeyed* instr) {
- Abort("DoCallKeyed unimplemented.");
+ ASSERT(ToRegister(instr->result()).is(r0));
+
+ int arity = instr->arity();
+ Handle<Code> ic = StubCache::ComputeKeyedCallInitialize(arity,
NOT_IN_LOOP);
+ CallCode(ic, RelocInfo::CODE_TARGET, instr);
+ __ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
}
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev