Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(72)

Unified Diff: src/a64/macro-assembler-a64.cc

Issue 153923005: A64: Synchronize with r17525. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/a64
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/a64/macro-assembler-a64.h ('k') | src/a64/stub-cache-a64.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/a64/macro-assembler-a64.cc
diff --git a/src/a64/macro-assembler-a64.cc b/src/a64/macro-assembler-a64.cc
index ed61a4681b356bb4287dab27e00bc4bc3f3b4197..e4bc20d53b6b492f1b2cfc0c458273efaa304fde 100644
--- a/src/a64/macro-assembler-a64.cc
+++ b/src/a64/macro-assembler-a64.cc
@@ -33,6 +33,7 @@
#include "codegen.h"
#include "cpu-profiler.h"
#include "debug.h"
+#include "isolate-inl.h"
#include "runtime.h"
namespace v8 {
@@ -631,6 +632,9 @@ void MacroAssembler::PopCPURegList(CPURegList registers) {
void MacroAssembler::PushMultipleTimes(int count, Register src) {
int size = src.SizeInBytes();
+ // TODO(all): Use a loop when optimizing for size.
+ TODO_UNIMPLEMENTED("PushMultipleTimes: Support --optimize-for-size.");
+
PrepareForPush(count, size);
// Push up to four registers at a time if possible because if the current
// stack pointer is csp and the register size is 32, registers must be pushed
@@ -2571,7 +2575,7 @@ void MacroAssembler::Prologue(PrologueFrameMode frame_mode) {
__ Push(lr, fp, cp, Tmp0());
__ Add(fp, jssp, 2 * kPointerSize);
} else {
- TODO_UNIMPLEMENTED("Prologue: Implement FLAG_optimize_for_size.");
+ TODO_UNIMPLEMENTED("Prologue: Support IsCodePreAgingActive().");
__ EmitFrameSetupForCodeAgePatching();
}
}
@@ -4070,6 +4074,30 @@ void MacroAssembler::JumpIfBlack(Register object,
}
+void MacroAssembler::JumpIfDictionaryInPrototypeChain(
+ Register object,
+ Register scratch0,
+ Register scratch1,
+ Label* found) {
+ ASSERT(!AreAliased(object, scratch0, scratch1));
+ Factory* factory = isolate()->factory();
+ Register current = scratch0;
+ Label loop_again;
+
+ // Scratch contains elements pointer.
+ Mov(current, object);
+
+ // Loop based on the map going up the prototype chain.
+ Bind(&loop_again);
+ Ldr(current, FieldMemOperand(current, HeapObject::kMapOffset));
+ Ldrb(scratch1, FieldMemOperand(current, Map::kBitField2Offset));
+ Ubfx(scratch1, scratch1, Map::kElementsKindShift, Map::kElementsKindBitCount);
+ CompareAndBranch(scratch1, DICTIONARY_ELEMENTS, eq, found);
+ Ldr(current, FieldMemOperand(current, Map::kPrototypeOffset));
+ CompareAndBranch(current, Operand(factory->null_value()), ne, &loop_again);
+}
+
+
void MacroAssembler::GetRelocatedValueLocation(Register ldr_location,
Register result) {
ASSERT(!result.Is(ldr_location));
« no previous file with comments | « src/a64/macro-assembler-a64.h ('k') | src/a64/stub-cache-a64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698