Revision: 22783
Author: [email protected]
Date: Fri Aug 1 09:23:07 2014 UTC
Log: Implement lowering of JSStoreContext to machine operators.
[email protected]
Review URL: https://codereview.chromium.org/420073004
http://code.google.com/p/v8/source/detail?r=22783
Modified:
/branches/bleeding_edge/src/compiler/js-generic-lowering.cc
/branches/bleeding_edge/src/runtime.cc
/branches/bleeding_edge/src/runtime.h
/branches/bleeding_edge/tools/generate-runtime-tests.py
=======================================
--- /branches/bleeding_edge/src/compiler/js-generic-lowering.cc Thu Jul 31
12:07:30 2014 UTC
+++ /branches/bleeding_edge/src/compiler/js-generic-lowering.cc Fri Aug 1
09:23:07 2014 UTC
@@ -388,9 +388,19 @@
Node* JSGenericLowering::LowerJSStoreContext(Node* node) {
ContextAccess access = OpParameter<ContextAccess>(node);
- PatchInsertInput(node, 1, SmiConstant(access.depth()));
- PatchInsertInput(node, 2, SmiConstant(access.index()));
- ReplaceWithRuntimeCall(node, Runtime::kStoreContextRelative, 4);
+ // TODO(mstarzinger): Use simplified operators instead of machine
operators
+ // here so that load/store optimization can be applied afterwards.
+ for (int i = 0; i < access.depth(); ++i) {
+ node->ReplaceInput(
+ 0, graph()->NewNode(
+ machine()->Load(kMachineTagged),
+ NodeProperties::GetValueInput(node, 0),
+ Int32Constant(Context::SlotOffset(Context::PREVIOUS_INDEX)),
+ NodeProperties::GetEffectInput(node)));
+ }
+ node->ReplaceInput(2, NodeProperties::GetValueInput(node, 1));
+ node->ReplaceInput(1,
Int32Constant(Context::SlotOffset(access.index())));
+ PatchOperator(node, machine()->Store(kMachineTagged, kFullWriteBarrier));
return node;
}
=======================================
--- /branches/bleeding_edge/src/runtime.cc Thu Jul 31 16:02:27 2014 UTC
+++ /branches/bleeding_edge/src/runtime.cc Fri Aug 1 09:23:07 2014 UTC
@@ -9406,22 +9406,6 @@
return *value;
}
-
-
-RUNTIME_FUNCTION(Runtime_StoreContextRelative) {
- SealHandleScope shs(isolate);
- ASSERT(args.length() == 4);
- CONVERT_ARG_CHECKED(Context, context, 0);
- CONVERT_SMI_ARG_CHECKED(depth, 1);
- CONVERT_SMI_ARG_CHECKED(index, 2);
- CONVERT_ARG_CHECKED(Object, value, 3);
- while (depth-- > 0) {
- context = context->previous();
- ASSERT(context->IsContext());
- }
- context->set(index, value);
- return isolate->heap()->undefined_value();
-}
RUNTIME_FUNCTION(Runtime_Throw) {
=======================================
--- /branches/bleeding_edge/src/runtime.h Thu Jul 31 11:20:36 2014 UTC
+++ /branches/bleeding_edge/src/runtime.h Fri Aug 1 09:23:07 2014 UTC
@@ -481,7 +481,6 @@
F(LoadLookupSlot, 2, 2) \
F(LoadLookupSlotNoReferenceError, 2, 2) \
F(StoreLookupSlot, 4, 1) \
- F(StoreContextRelative, 4, 1) /* TODO(turbofan): Only temporary */ \
\
/* Declarations and initialization */ \
F(DeclareGlobals, 3, 1) \
=======================================
--- /branches/bleeding_edge/tools/generate-runtime-tests.py Thu Jul 31
11:20:36 2014 UTC
+++ /branches/bleeding_edge/tools/generate-runtime-tests.py Fri Aug 1
09:23:07 2014 UTC
@@ -47,9 +47,9 @@
# that the parser doesn't bit-rot. Change the values as needed when you
add,
# remove or change runtime functions, but make sure we don't lose our
ability
# to parse them!
-EXPECTED_FUNCTION_COUNT = 426
+EXPECTED_FUNCTION_COUNT = 425
EXPECTED_FUZZABLE_COUNT = 338
-EXPECTED_CCTEST_COUNT = 10
+EXPECTED_CCTEST_COUNT = 9
EXPECTED_UNKNOWN_COUNT = 4
EXPECTED_BUILTINS_COUNT = 816
--
--
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.