Reviewers: jbramley,
Message:
Hi Jacob, would you mind taking a look?
Description:
ARM: make sure that the expected code size is computed in predictable scope.
BUG=v8:4277
LOG=NO
Please review this at https://codereview.chromium.org/1251443002/
Base URL: https://chromium.googlesource.com/v8/v8.git@master
Affected files (+13, -5 lines):
M src/arm/code-stubs-arm.cc
M src/arm/full-codegen-arm.cc
M src/arm/lithium-codegen-arm.cc
M src/assembler.h
M src/assembler.cc
Index: src/arm/code-stubs-arm.cc
diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc
index
005fb97513d0277325c9ff516612aeb922f1949c..2dcb53dd175f24968b775796febddf9df395dd0d
100644
--- a/src/arm/code-stubs-arm.cc
+++ b/src/arm/code-stubs-arm.cc
@@ -4667,8 +4667,9 @@ void
VectorKeyedStoreICStub::GenerateImpl(MacroAssembler* masm, bool in_frame) {
void ProfileEntryHookStub::MaybeCallEntryHook(MacroAssembler* masm) {
if (masm->isolate()->function_entry_hook() != NULL) {
ProfileEntryHookStub stub(masm->isolate());
- int code_size = masm->CallStubSize(&stub) + 2 * Assembler::kInstrSize;
- PredictableCodeSizeScope predictable(masm, code_size);
+ PredictableCodeSizeScope predictable(masm);
+ predictable.ExpectSize(masm->CallStubSize(&stub) +
+ 2 * Assembler::kInstrSize);
__ push(lr);
__ CallStub(&stub);
__ pop(lr);
Index: src/arm/full-codegen-arm.cc
diff --git a/src/arm/full-codegen-arm.cc b/src/arm/full-codegen-arm.cc
index
476bd05e7395afa602c8b0e5b179ec7b0443b0b8..d9a6884fad1dbb68c46a2666f0665c453003adef
100644
--- a/src/arm/full-codegen-arm.cc
+++ b/src/arm/full-codegen-arm.cc
@@ -364,7 +364,8 @@ void FullCodeGenerator::Generate() {
__ cmp(sp, Operand(ip));
__ b(hs, &ok);
Handle<Code> stack_check = isolate()->builtins()->StackCheck();
- PredictableCodeSizeScope predictable(masm_,
+ PredictableCodeSizeScope predictable(masm_);
+ predictable.ExpectSize(
masm_->CallSize(stack_check, RelocInfo::CODE_TARGET));
__ Call(stack_check, RelocInfo::CODE_TARGET);
__ bind(&ok);
Index: src/arm/lithium-codegen-arm.cc
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc
index
04f6e6d9be480dd4703e9b8ef6317430cb3db021..a1534adb9b987ce6d074e1586b2d815024d1af1b
100644
--- a/src/arm/lithium-codegen-arm.cc
+++ b/src/arm/lithium-codegen-arm.cc
@@ -5801,8 +5801,8 @@ void LCodeGen::DoStackCheck(LStackCheck* instr) {
__ cmp(sp, Operand(ip));
__ b(hs, &done);
Handle<Code> stack_check = isolate()->builtins()->StackCheck();
- PredictableCodeSizeScope predictable(masm(),
- CallCodeSize(stack_check, RelocInfo::CODE_TARGET));
+ PredictableCodeSizeScope predictable(masm());
+ predictable.ExpectSize(CallCodeSize(stack_check,
RelocInfo::CODE_TARGET));
DCHECK(instr->context()->IsRegister());
DCHECK(ToRegister(instr->context()).is(cp));
CallCode(stack_check, RelocInfo::CODE_TARGET, instr);
Index: src/assembler.cc
diff --git a/src/assembler.cc b/src/assembler.cc
index
70d35b0f21538b9ad8b589a4af640a733c51d9ff..6b08d34a24bd8dc74c21b52e1240e59898a6ab4b
100644
--- a/src/assembler.cc
+++ b/src/assembler.cc
@@ -158,6 +158,10 @@ AssemblerBase::~AssemblerBase() {
//
-----------------------------------------------------------------------------
// Implementation of PredictableCodeSizeScope
+PredictableCodeSizeScope::PredictableCodeSizeScope(AssemblerBase*
assembler)
+ : PredictableCodeSizeScope(assembler, -1) {}
+
+
PredictableCodeSizeScope::PredictableCodeSizeScope(AssemblerBase*
assembler,
int expected_size)
: assembler_(assembler),
Index: src/assembler.h
diff --git a/src/assembler.h b/src/assembler.h
index
1b4c76540757a17de02e341327d7f4dacc812064..ee7026a8753466d7096686bbf664ee727368a696
100644
--- a/src/assembler.h
+++ b/src/assembler.h
@@ -158,8 +158,10 @@ class DontEmitDebugCodeScope BASE_EMBEDDED {
// snapshot and the running VM.
class PredictableCodeSizeScope {
public:
+ explicit PredictableCodeSizeScope(AssemblerBase* assembler);
PredictableCodeSizeScope(AssemblerBase* assembler, int expected_size);
~PredictableCodeSizeScope();
+ void ExpectSize(int expected_size) { expected_size_ = expected_size; }
private:
AssemblerBase* assembler_;
--
--
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.