Reviewers: dstence, michael_dawson, mvstanton,
Description:
PPC: Vector ICs: Turbofan vector store ic support
Port 17c8ffeaa3e4e1769f0b4d0e7c8a6fb26b5297bd
Original commit message:
Turbofan needs to pass vector slots around for named and keyed stores.
Also, the CL addresses a missing slot for ClassLiterals.
[email protected], [email protected], [email protected]
BUG=
Please review this at https://codereview.chromium.org/1201983005/
Base URL: https://chromium.googlesource.com/v8/v8.git@master
Affected files (+3, -10 lines):
M src/ppc/full-codegen-ppc.cc
Index: src/ppc/full-codegen-ppc.cc
diff --git a/src/ppc/full-codegen-ppc.cc b/src/ppc/full-codegen-ppc.cc
index
006d38309a50ab9dcc4c6ad55a594ea0147fc698..e9005970d34ed80654c905263b1f2fbbe1be1590
100644
--- a/src/ppc/full-codegen-ppc.cc
+++ b/src/ppc/full-codegen-ppc.cc
@@ -2548,7 +2548,8 @@ void
FullCodeGenerator::EmitInlineSmiBinaryOp(BinaryOperation* expr,
}
-void FullCodeGenerator::EmitClassDefineProperties(ClassLiteral* lit) {
+void FullCodeGenerator::EmitClassDefineProperties(ClassLiteral* lit,
+ int* used_store_slots) {
// Constructor is in r3.
DCHECK(lit != NULL);
__ push(r3);
@@ -2560,10 +2561,6 @@ void
FullCodeGenerator::EmitClassDefineProperties(ClassLiteral* lit) {
FieldMemOperand(r3, JSFunction::kPrototypeOrInitialMapOffset));
__ push(scratch);
- // store_slot_index points to the vector IC slot for the next store IC
used.
- // ClassLiteral::ComputeFeedbackRequirements controls the allocation of
slots
- // and must be updated if the number of store ICs emitted here changes.
- int store_slot_index = 0;
for (int i = 0; i < lit->properties()->length(); i++) {
ObjectLiteral::Property* property = lit->properties()->at(i);
Expression* value = property->value();
@@ -2587,7 +2584,7 @@ void
FullCodeGenerator::EmitClassDefineProperties(ClassLiteral* lit) {
VisitForStackValue(value);
EmitSetHomeObjectIfNeeded(value, 2,
- lit->SlotForHomeObject(value,
&store_slot_index));
+ lit->SlotForHomeObject(value,
used_store_slots));
switch (property->kind()) {
case ObjectLiteral::Property::CONSTANT:
@@ -2620,10 +2617,6 @@ void
FullCodeGenerator::EmitClassDefineProperties(ClassLiteral* lit) {
// constructor
__ CallRuntime(Runtime::kToFastProperties, 1);
-
- // Verify that compilation exactly consumed the number of store ic slots
that
- // the ClassLiteral node had to offer.
- DCHECK(!FLAG_vector_stores || store_slot_index == lit->slot_count());
}
--
--
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/d/optout.