Reviewers: Weiliang,
Message:
PTAL
Description:
X87: Vector ICs: Turbofan vector store ic support
port 17c8ffeaa3e4e1769f0b4d0e7c8a6fb26b5297bd (r29173)
original commit message:
Vector ICs: Turbofan vector store ic support
Turbofan needs to pass vector slots around for named and keyed stores.
Also, the CL addresses a missing slot for ClassLiterals.
BUG=
Please review this at https://codereview.chromium.org/1195793007/
Base URL: https://chromium.googlesource.com/v8/v8.git@master
Affected files (+3, -10 lines):
M src/x87/full-codegen-x87.cc
Index: src/x87/full-codegen-x87.cc
diff --git a/src/x87/full-codegen-x87.cc b/src/x87/full-codegen-x87.cc
index
603799d4e02af53823ccad66328e1d1795d7bc95..0c6f986ee0fa59619ea084ecaad54151ff8cc816
100644
--- a/src/x87/full-codegen-x87.cc
+++ b/src/x87/full-codegen-x87.cc
@@ -2454,7 +2454,8 @@ void
FullCodeGenerator::EmitInlineSmiBinaryOp(BinaryOperation* expr,
}
-void FullCodeGenerator::EmitClassDefineProperties(ClassLiteral* lit) {
+void FullCodeGenerator::EmitClassDefineProperties(ClassLiteral* lit,
+ int* used_store_slots) {
// Constructor is in eax.
DCHECK(lit != NULL);
__ push(eax);
@@ -2465,10 +2466,6 @@ void
FullCodeGenerator::EmitClassDefineProperties(ClassLiteral* lit) {
__ mov(scratch, FieldOperand(eax,
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();
@@ -2491,7 +2488,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:
@@ -2519,10 +2516,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
v8-dev@googlegroups.com
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 v8-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.