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.

Reply via email to