Reviewers: Benedikt Meurer, balazs.kilvady, akos.palfi.imgtec,
dusmil.imgtec, danno,
Message:
PTAL.
Description:
MIPS: [turbofan] Load immortal heap objects from the heap roots.
Port 5d2de78a771b8ff1ac59fbdf634bffd01709b554
BUG=
Please review this at https://codereview.chromium.org/1085693003/
Base URL: https://chromium.googlesource.com/v8/v8.git@master
Affected files (+12, -22 lines):
M src/compiler/mips/code-generator-mips.cc
M src/compiler/mips64/code-generator-mips64.cc
Index: src/compiler/mips/code-generator-mips.cc
diff --git a/src/compiler/mips/code-generator-mips.cc
b/src/compiler/mips/code-generator-mips.cc
index
7647d24ae98508744090b62b5c2e4a2b85abc10f..98115b46e72f8646c06a51256661d19da7e22cfb
100644
--- a/src/compiler/mips/code-generator-mips.cc
+++ b/src/compiler/mips/code-generator-mips.cc
@@ -1140,17 +1140,12 @@ void
CodeGenerator::AssembleMove(InstructionOperand* source,
break;
case Constant::kHeapObject: {
Handle<HeapObject> src_object = src.ToHeapObject();
- if (info()->IsOptimizing() &&
- src_object.is_identical_to(info()->context())) {
- // Loading the context from the frame is way cheaper than
- // materializing the actual context heap object address.
- __ lw(dst, MemOperand(fp,
StandardFrameConstants::kContextOffset));
- } else if (info()->IsOptimizing() &&
- src_object.is_identical_to(info()->closure())) {
- // Loading the JSFunction from the frame is way cheaper than
- // materializing the actual JSFunction heap object address.
- __ lw(dst,
- MemOperand(fp,
JavaScriptFrameConstants::kFunctionOffset));
+ Heap::RootListIndex index;
+ int offset;
+ if (IsMaterializableFromFrame(src_object, &offset)) {
+ __ lw(dst, MemOperand(fp, offset));
+ } else if (IsMaterializableFromRoot(src_object, &index)) {
+ __ LoadRoot(dst, index);
} else {
__ li(dst, src_object);
}
Index: src/compiler/mips64/code-generator-mips64.cc
diff --git a/src/compiler/mips64/code-generator-mips64.cc
b/src/compiler/mips64/code-generator-mips64.cc
index
756cb632da2f59de19c2827aa70039b1618144e1..643483a4d01d8c39d4735270b03e96c701e0ffd6
100644
--- a/src/compiler/mips64/code-generator-mips64.cc
+++ b/src/compiler/mips64/code-generator-mips64.cc
@@ -1206,17 +1206,12 @@ void
CodeGenerator::AssembleMove(InstructionOperand* source,
break;
case Constant::kHeapObject: {
Handle<HeapObject> src_object = src.ToHeapObject();
- if (info()->IsOptimizing() &&
- src_object.is_identical_to(info()->context())) {
- // Loading the context from the frame is way cheaper than
- // materializing the actual context heap object address.
- __ ld(dst, MemOperand(fp,
StandardFrameConstants::kContextOffset));
- } else if (info()->IsOptimizing() &&
- src_object.is_identical_to(info()->closure())) {
- // Loading the JSFunction from the frame is way cheaper than
- // materializing the actual JSFunction heap object address.
- __ ld(dst,
- MemOperand(fp,
JavaScriptFrameConstants::kFunctionOffset));
+ Heap::RootListIndex index;
+ int offset;
+ if (IsMaterializableFromFrame(src_object, &offset)) {
+ __ ld(dst, MemOperand(fp, offset));
+ } else if (IsMaterializableFromRoot(src_object, &index)) {
+ __ LoadRoot(dst, index);
} else {
__ li(dst, src_object);
}
--
--
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.