Reviewers: dstence, michael_dawson, mvstanton,
Description:
PPC: HydrogenCodeStubs consume stack arguments via descriptor.
Port 3334b830a512eda1f8eed678a0e6fda52b23472a
Original commit message;
All of this is controlled by the CallDescriptor. It's simply the case
that if you specify less registers than the function arity calls for,
the rest are assumed to be on the stack.
Bailout handlers accept these constant stack arguments too.
[email protected], [email protected], [email protected]
BUG=
Please review this at https://codereview.chromium.org/1256563002/
Base URL: https://chromium.googlesource.com/v8/v8.git@master
Affected files (+17, -3 lines):
M src/ic/ppc/handler-compiler-ppc.cc
M src/ppc/code-stubs-ppc.cc
M src/ppc/interface-descriptors-ppc.cc
Index: src/ic/ppc/handler-compiler-ppc.cc
diff --git a/src/ic/ppc/handler-compiler-ppc.cc
b/src/ic/ppc/handler-compiler-ppc.cc
index
8988b08e2c1749265eb670564f24283d8f010f47..e24220bd3f75f930efa54c6087bb12e1cd778faf
100644
--- a/src/ic/ppc/handler-compiler-ppc.cc
+++ b/src/ic/ppc/handler-compiler-ppc.cc
@@ -351,11 +351,17 @@ void
NamedStoreHandlerCompiler::GenerateRestoreName(Handle<Name> name) {
}
+void NamedStoreHandlerCompiler::GeneratePushMap(Register map_reg,
+ Register scratch) {
+ DCHECK(false); // Not implemented.
+}
+
+
void NamedStoreHandlerCompiler::GenerateRestoreMap(Handle<Map> transition,
+ Register map_reg,
Register scratch,
Label* miss) {
Handle<WeakCell> cell = Map::WeakCellForMap(transition);
- Register map_reg = StoreTransitionDescriptor::MapRegister();
DCHECK(!map_reg.is(scratch));
__ LoadWeakValue(map_reg, cell, miss);
if (transition->CanBeDeprecated()) {
Index: src/ppc/code-stubs-ppc.cc
diff --git a/src/ppc/code-stubs-ppc.cc b/src/ppc/code-stubs-ppc.cc
index
c18f0f7d79365c4ab4c68284c3959191bd6e73cb..2be2bc54dc92efc172f0604100fe7c41bae89052
100644
--- a/src/ppc/code-stubs-ppc.cc
+++ b/src/ppc/code-stubs-ppc.cc
@@ -33,7 +33,7 @@ static void InitializeArrayConstructorDescriptor(
JS_FUNCTION_STUB_MODE);
} else {
descriptor->Initialize(r3, deopt_handler,
constant_stack_parameter_count,
- JS_FUNCTION_STUB_MODE, PASS_ARGUMENTS);
+ JS_FUNCTION_STUB_MODE);
}
}
@@ -49,7 +49,7 @@ static void InitializeInternalArrayConstructorDescriptor(
JS_FUNCTION_STUB_MODE);
} else {
descriptor->Initialize(r3, deopt_handler,
constant_stack_parameter_count,
- JS_FUNCTION_STUB_MODE, PASS_ARGUMENTS);
+ JS_FUNCTION_STUB_MODE);
}
}
Index: src/ppc/interface-descriptors-ppc.cc
diff --git a/src/ppc/interface-descriptors-ppc.cc
b/src/ppc/interface-descriptors-ppc.cc
index
9bcbf9cfccb370b7ade194ebf2df6ef7894e431c..b3a4ea251f95e0667661614dbe0b9bfadd51244a
100644
--- a/src/ppc/interface-descriptors-ppc.cc
+++ b/src/ppc/interface-descriptors-ppc.cc
@@ -73,6 +73,14 @@ const Register
GrowArrayElementsDescriptor::ObjectRegister() { return r3; }
const Register GrowArrayElementsDescriptor::KeyRegister() { return r6; }
+void StoreTransitionDescriptor::InitializePlatformSpecific(
+ CallInterfaceDescriptorData* data) {
+ Register registers[] = {ReceiverRegister(), NameRegister(),
ValueRegister(),
+ MapRegister()};
+ data->InitializePlatformSpecific(arraysize(registers), registers);
+}
+
+
void FastNewClosureDescriptor::InitializePlatformSpecific(
CallInterfaceDescriptorData* data) {
Register registers[] = {r5};
--
--
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.