Additional minor cleanup regarding CallWrapper: Use the null object pattern.

Review URL: http://codereview.chromium.org/6909026

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7767 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
svenpanne@chromium.org 2011-05-03 15:12:40 +00:00
parent 797cbc68b7
commit 1b833ff35e
12 changed files with 90 additions and 88 deletions

View File

@ -46,7 +46,7 @@ class SafepointGenerator : public CallWrapper {
deoptimization_index_(deoptimization_index) { }
virtual ~SafepointGenerator() { }
virtual void BeforeCall(int call_size) {
virtual void BeforeCall(int call_size) const {
ASSERT(call_size >= 0);
// Ensure that we have enough space after the previous safepoint position
// for the generated code there.
@ -63,7 +63,7 @@ class SafepointGenerator : public CallWrapper {
}
}
virtual void AfterCall() {
virtual void AfterCall() const {
codegen_->RecordSafepoint(pointers_, deoptimization_index_);
}
@ -2641,7 +2641,7 @@ void LCodeGen::DoApplyArguments(LApplyArguments* instr) {
// The number of arguments is stored in receiver which is r0, as expected
// by InvokeFunction.
v8::internal::ParameterCount actual(receiver);
__ InvokeFunction(function, actual, CALL_FUNCTION, &safepoint_generator);
__ InvokeFunction(function, actual, CALL_FUNCTION, safepoint_generator);
__ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
}
@ -3084,7 +3084,7 @@ void LCodeGen::DoInvokeFunction(LInvokeFunction* instr) {
RegisterEnvironmentForDeoptimization(env);
SafepointGenerator generator(this, pointers, env->deoptimization_index());
ParameterCount count(instr->arity());
__ InvokeFunction(r1, count, CALL_FUNCTION, &generator);
__ InvokeFunction(r1, count, CALL_FUNCTION, generator);
__ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
}
@ -4256,7 +4256,7 @@ void LCodeGen::DoDeleteProperty(LDeleteProperty* instr) {
SafepointGenerator safepoint_generator(this,
pointers,
env->deoptimization_index());
__ InvokeBuiltin(Builtins::DELETE, CALL_FUNCTION, &safepoint_generator);
__ InvokeBuiltin(Builtins::DELETE, CALL_FUNCTION, safepoint_generator);
}
@ -4272,7 +4272,7 @@ void LCodeGen::DoIn(LIn* instr) {
SafepointGenerator safepoint_generator(this,
pointers,
env->deoptimization_index());
__ InvokeBuiltin(Builtins::IN, CALL_FUNCTION, &safepoint_generator);
__ InvokeBuiltin(Builtins::IN, CALL_FUNCTION, safepoint_generator);
}

View File

@ -886,7 +886,7 @@ void MacroAssembler::InvokePrologue(const ParameterCount& expected,
Register code_reg,
Label* done,
InvokeFlag flag,
CallWrapper* call_wrapper) {
const CallWrapper& call_wrapper) {
bool definitely_matches = false;
Label regular_invoke;
@ -941,11 +941,9 @@ void MacroAssembler::InvokePrologue(const ParameterCount& expected,
Handle<Code> adaptor =
isolate()->builtins()->ArgumentsAdaptorTrampoline();
if (flag == CALL_FUNCTION) {
if (call_wrapper != NULL) {
call_wrapper->BeforeCall(CallSize(adaptor, RelocInfo::CODE_TARGET));
}
call_wrapper.BeforeCall(CallSize(adaptor, RelocInfo::CODE_TARGET));
Call(adaptor, RelocInfo::CODE_TARGET);
if (call_wrapper != NULL) call_wrapper->AfterCall();
call_wrapper.AfterCall();
b(done);
} else {
Jump(adaptor, RelocInfo::CODE_TARGET);
@ -959,15 +957,15 @@ void MacroAssembler::InvokeCode(Register code,
const ParameterCount& expected,
const ParameterCount& actual,
InvokeFlag flag,
CallWrapper* call_wrapper) {
const CallWrapper& call_wrapper) {
Label done;
InvokePrologue(expected, actual, Handle<Code>::null(), code, &done, flag,
call_wrapper);
if (flag == CALL_FUNCTION) {
if (call_wrapper != NULL) call_wrapper->BeforeCall(CallSize(code));
call_wrapper.BeforeCall(CallSize(code));
Call(code);
if (call_wrapper != NULL) call_wrapper->AfterCall();
call_wrapper.AfterCall();
} else {
ASSERT(flag == JUMP_FUNCTION);
Jump(code);
@ -1002,7 +1000,7 @@ void MacroAssembler::InvokeCode(Handle<Code> code,
void MacroAssembler::InvokeFunction(Register fun,
const ParameterCount& actual,
InvokeFlag flag,
CallWrapper* call_wrapper) {
const CallWrapper& call_wrapper) {
// Contract with called JS functions requires that function is passed in r1.
ASSERT(fun.is(r1));
@ -2314,12 +2312,12 @@ MaybeObject* MacroAssembler::TryJumpToExternalReference(
void MacroAssembler::InvokeBuiltin(Builtins::JavaScript id,
InvokeFlag flag,
CallWrapper* call_wrapper) {
const CallWrapper& call_wrapper) {
GetBuiltinEntry(r2, id);
if (flag == CALL_FUNCTION) {
if (call_wrapper != NULL) call_wrapper->BeforeCall(CallSize(r2));
call_wrapper.BeforeCall(CallSize(r2));
Call(r2);
if (call_wrapper != NULL) call_wrapper->AfterCall();
call_wrapper.AfterCall();
} else {
ASSERT(flag == JUMP_FUNCTION);
Jump(r2);

View File

@ -350,7 +350,7 @@ class MacroAssembler: public Assembler {
const ParameterCount& expected,
const ParameterCount& actual,
InvokeFlag flag,
CallWrapper* call_wrapper = NULL);
const CallWrapper& call_wrapper = NullCallWrapper());
void InvokeCode(Handle<Code> code,
const ParameterCount& expected,
@ -363,7 +363,7 @@ class MacroAssembler: public Assembler {
void InvokeFunction(Register function,
const ParameterCount& actual,
InvokeFlag flag,
CallWrapper* call_wrapper = NULL);
const CallWrapper& call_wrapper = NullCallWrapper());
void InvokeFunction(JSFunction* function,
const ParameterCount& actual,
@ -799,7 +799,7 @@ class MacroAssembler: public Assembler {
// the unresolved list if the name does not resolve.
void InvokeBuiltin(Builtins::JavaScript id,
InvokeFlag flag,
CallWrapper* call_wrapper = NULL);
const CallWrapper& call_wrapper = NullCallWrapper());
// Store the code object for the given builtin in the target register and
// setup the function in r1.
@ -1002,7 +1002,7 @@ class MacroAssembler: public Assembler {
Register code_reg,
Label* done,
InvokeFlag flag,
CallWrapper* call_wrapper = NULL);
const CallWrapper& call_wrapper = NullCallWrapper());
// Activation support.
void EnterFrame(StackFrame::Type type);

View File

@ -852,9 +852,17 @@ class CallWrapper {
virtual ~CallWrapper() { }
// Called just before emitting a call. Argument is the size of the generated
// call code.
virtual void BeforeCall(int call_size) = 0;
virtual void BeforeCall(int call_size) const = 0;
// Called just after emitting a call, i.e., at the return site for the call.
virtual void AfterCall() = 0;
virtual void AfterCall() const = 0;
};
class NullCallWrapper : public CallWrapper {
public:
NullCallWrapper() { }
virtual ~NullCallWrapper() { }
virtual void BeforeCall(int call_size) const { }
virtual void AfterCall() const { }
};
} } // namespace v8::internal

View File

@ -50,9 +50,9 @@ class SafepointGenerator : public CallWrapper {
deoptimization_index_(deoptimization_index) {}
virtual ~SafepointGenerator() { }
virtual void BeforeCall(int call_size) {}
virtual void BeforeCall(int call_size) const {}
virtual void AfterCall() {
virtual void AfterCall() const {
codegen_->RecordSafepoint(pointers_, deoptimization_index_);
}
@ -2552,7 +2552,7 @@ void LCodeGen::DoApplyArguments(LApplyArguments* instr) {
pointers,
env->deoptimization_index());
ParameterCount actual(eax);
__ InvokeFunction(function, actual, CALL_FUNCTION, &safepoint_generator);
__ InvokeFunction(function, actual, CALL_FUNCTION, safepoint_generator);
}
@ -2974,7 +2974,7 @@ void LCodeGen::DoInvokeFunction(LInvokeFunction* instr) {
RegisterEnvironmentForDeoptimization(env);
SafepointGenerator generator(this, pointers, env->deoptimization_index());
ParameterCount count(instr->arity());
__ InvokeFunction(edi, count, CALL_FUNCTION, &generator);
__ InvokeFunction(edi, count, CALL_FUNCTION, generator);
}
@ -4237,7 +4237,7 @@ void LCodeGen::DoDeleteProperty(LDeleteProperty* instr) {
env->deoptimization_index());
__ mov(esi, Operand(ebp, StandardFrameConstants::kContextOffset));
__ push(Immediate(Smi::FromInt(strict_mode_flag())));
__ InvokeBuiltin(Builtins::DELETE, CALL_FUNCTION, &safepoint_generator);
__ InvokeBuiltin(Builtins::DELETE, CALL_FUNCTION, safepoint_generator);
}
@ -4297,7 +4297,7 @@ void LCodeGen::DoIn(LIn* instr) {
pointers,
env->deoptimization_index());
__ mov(esi, Operand(ebp, StandardFrameConstants::kContextOffset));
__ InvokeBuiltin(Builtins::IN, CALL_FUNCTION, &safepoint_generator);
__ InvokeBuiltin(Builtins::IN, CALL_FUNCTION, safepoint_generator);
}

View File

@ -1435,7 +1435,7 @@ void MacroAssembler::InvokePrologue(const ParameterCount& expected,
const Operand& code_operand,
NearLabel* done,
InvokeFlag flag,
CallWrapper* call_wrapper) {
const CallWrapper& call_wrapper) {
bool definitely_matches = false;
Label invoke;
if (expected.is_immediate()) {
@ -1485,11 +1485,9 @@ void MacroAssembler::InvokePrologue(const ParameterCount& expected,
}
if (flag == CALL_FUNCTION) {
if (call_wrapper != NULL) {
call_wrapper->BeforeCall(CallSize(adaptor, RelocInfo::CODE_TARGET));
}
call_wrapper.BeforeCall(CallSize(adaptor, RelocInfo::CODE_TARGET));
call(adaptor, RelocInfo::CODE_TARGET);
if (call_wrapper != NULL) call_wrapper->AfterCall();
call_wrapper.AfterCall();
jmp(done);
} else {
jmp(adaptor, RelocInfo::CODE_TARGET);
@ -1503,14 +1501,14 @@ void MacroAssembler::InvokeCode(const Operand& code,
const ParameterCount& expected,
const ParameterCount& actual,
InvokeFlag flag,
CallWrapper* call_wrapper) {
const CallWrapper& call_wrapper) {
NearLabel done;
InvokePrologue(expected, actual, Handle<Code>::null(), code,
&done, flag, call_wrapper);
if (flag == CALL_FUNCTION) {
if (call_wrapper != NULL) call_wrapper->BeforeCall(CallSize(code));
call_wrapper.BeforeCall(CallSize(code));
call(code);
if (call_wrapper != NULL) call_wrapper->AfterCall();
call_wrapper.AfterCall();
} else {
ASSERT(flag == JUMP_FUNCTION);
jmp(code);
@ -1524,14 +1522,14 @@ void MacroAssembler::InvokeCode(Handle<Code> code,
const ParameterCount& actual,
RelocInfo::Mode rmode,
InvokeFlag flag,
CallWrapper* call_wrapper) {
const CallWrapper& call_wrapper) {
NearLabel done;
Operand dummy(eax);
InvokePrologue(expected, actual, code, dummy, &done, flag, call_wrapper);
if (flag == CALL_FUNCTION) {
if (call_wrapper != NULL) call_wrapper->BeforeCall(CallSize(code, rmode));
call_wrapper.BeforeCall(CallSize(code, rmode));
call(code, rmode);
if (call_wrapper != NULL) call_wrapper->AfterCall();
call_wrapper.AfterCall();
} else {
ASSERT(flag == JUMP_FUNCTION);
jmp(code, rmode);
@ -1543,7 +1541,7 @@ void MacroAssembler::InvokeCode(Handle<Code> code,
void MacroAssembler::InvokeFunction(Register fun,
const ParameterCount& actual,
InvokeFlag flag,
CallWrapper* call_wrapper) {
const CallWrapper& call_wrapper) {
ASSERT(fun.is(edi));
mov(edx, FieldOperand(edi, JSFunction::kSharedFunctionInfoOffset));
mov(esi, FieldOperand(edi, JSFunction::kContextOffset));
@ -1559,7 +1557,7 @@ void MacroAssembler::InvokeFunction(Register fun,
void MacroAssembler::InvokeFunction(JSFunction* function,
const ParameterCount& actual,
InvokeFlag flag,
CallWrapper* call_wrapper) {
const CallWrapper& call_wrapper) {
ASSERT(function->is_compiled());
// Get the function and setup the context.
mov(edi, Immediate(Handle<JSFunction>(function)));
@ -1582,7 +1580,7 @@ void MacroAssembler::InvokeFunction(JSFunction* function,
void MacroAssembler::InvokeBuiltin(Builtins::JavaScript id,
InvokeFlag flag,
CallWrapper* call_wrapper) {
const CallWrapper& call_wrapper) {
// Calls are not allowed in some stubs.
ASSERT(flag == JUMP_FUNCTION || allow_stub_calls());

View File

@ -157,32 +157,32 @@ class MacroAssembler: public Assembler {
const ParameterCount& expected,
const ParameterCount& actual,
InvokeFlag flag,
CallWrapper* call_wrapper = NULL);
const CallWrapper& call_wrapper = NullCallWrapper());
void InvokeCode(Handle<Code> code,
const ParameterCount& expected,
const ParameterCount& actual,
RelocInfo::Mode rmode,
InvokeFlag flag,
CallWrapper* call_wrapper = NULL);
const CallWrapper& call_wrapper = NullCallWrapper());
// Invoke the JavaScript function in the given register. Changes the
// current context to the context in the function before invoking.
void InvokeFunction(Register function,
const ParameterCount& actual,
InvokeFlag flag,
CallWrapper* call_wrapper = NULL);
const CallWrapper& call_wrapper = NullCallWrapper());
void InvokeFunction(JSFunction* function,
const ParameterCount& actual,
InvokeFlag flag,
CallWrapper* call_wrapper = NULL);
const CallWrapper& call_wrapper = NullCallWrapper());
// Invoke specified builtin JavaScript function. Adds an entry to
// the unresolved list if the name does not resolve.
void InvokeBuiltin(Builtins::JavaScript id,
InvokeFlag flag,
CallWrapper* call_wrapper = NULL);
const CallWrapper& call_wrapper = NullCallWrapper());
// Store the function for the given builtin in the target register.
void GetBuiltinFunction(Register target, Builtins::JavaScript id);
@ -649,7 +649,7 @@ class MacroAssembler: public Assembler {
const Operand& code_operand,
NearLabel* done,
InvokeFlag flag,
CallWrapper* call_wrapper = NULL);
const CallWrapper& call_wrapper = NullCallWrapper());
// Activation support.
void EnterFrame(StackFrame::Type type);

View File

@ -2255,7 +2255,7 @@ void MacroAssembler::InvokePrologue(const ParameterCount& expected,
Register code_reg,
Label* done,
InvokeFlag flag,
CallWrapper* call_wrapper) {
const CallWrapper& call_wrapper) {
bool definitely_matches = false;
Label regular_invoke;
@ -2308,11 +2308,9 @@ void MacroAssembler::InvokePrologue(const ParameterCount& expected,
Handle<Code> adaptor =
isolate()->builtins()->ArgumentsAdaptorTrampoline();
if (flag == CALL_FUNCTION) {
if (call_wrapper != NULL) {
call_wrapper->BeforeCall(CallSize(adaptor, RelocInfo::CODE_TARGET));
}
call_wrapper.BeforeCall(CallSize(adaptor, RelocInfo::CODE_TARGET));
Call(adaptor, RelocInfo::CODE_TARGET);
if (call_wrapper != NULL) call_wrapper->AfterCall();
call_wrapper.AfterCall();
jmp(done);
} else {
Jump(adaptor, RelocInfo::CODE_TARGET);
@ -2326,7 +2324,7 @@ void MacroAssembler::InvokeCode(Register code,
const ParameterCount& expected,
const ParameterCount& actual,
InvokeFlag flag,
CallWrapper* call_wrapper) {
const CallWrapper& call_wrapper) {
Label done;
InvokePrologue(expected, actual, Handle<Code>::null(), code, &done, flag,
@ -2365,7 +2363,7 @@ void MacroAssembler::InvokeCode(Handle<Code> code,
void MacroAssembler::InvokeFunction(Register function,
const ParameterCount& actual,
InvokeFlag flag,
CallWrapper* call_wrapper) {
const CallWrapper& call_wrapper) {
// Contract with called JS functions requires that function is passed in a1.
ASSERT(function.is(a1));
Register expected_reg = a2;
@ -2657,12 +2655,12 @@ void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin) {
void MacroAssembler::InvokeBuiltin(Builtins::JavaScript id,
InvokeFlag flag,
CallWrapper* call_wrapper) {
const CallWrapper& call_wrapper) {
GetBuiltinEntry(t9, id);
if (flag == CALL_FUNCTION) {
if (call_wrapper != NULL) call_wrapper->BeforeCall(CallSize(t9));
call_wrapper.BeforeCall(CallSize(t9));
Call(t9);
if (call_wrapper != NULL) call_wrapper->AfterCall();
call_wrapper.AfterCall();
} else {
ASSERT(flag == JUMP_FUNCTION);
Jump(t9);

View File

@ -587,7 +587,7 @@ DECLARE_NOTARGET_PROTOTYPE(Ret)
const ParameterCount& expected,
const ParameterCount& actual,
InvokeFlag flag,
CallWrapper* call_wrapper = NULL);
const CallWrapper& call_wrapper = NullCallWrapper());
void InvokeCode(Handle<Code> code,
const ParameterCount& expected,
@ -600,7 +600,7 @@ DECLARE_NOTARGET_PROTOTYPE(Ret)
void InvokeFunction(Register function,
const ParameterCount& actual,
InvokeFlag flag,
CallWrapper* call_wrapper = NULL);
const CallWrapper& call_wrapper = NullCallWrapper());
void InvokeFunction(JSFunction* function,
const ParameterCount& actual,
@ -770,7 +770,7 @@ DECLARE_NOTARGET_PROTOTYPE(Ret)
// the unresolved list if the name does not resolve.
void InvokeBuiltin(Builtins::JavaScript id,
InvokeFlag flag,
CallWrapper* call_wrapper = NULL);
const CallWrapper& call_wrapper = NullCallWrapper());
// Store the code object for the given builtin in the target register and
// setup the function in a1.
@ -953,7 +953,7 @@ DECLARE_NOTARGET_PROTOTYPE(Ret)
Register code_reg,
Label* done,
InvokeFlag flag,
CallWrapper* call_wrapper = NULL);
const CallWrapper& call_wrapper = NullCallWrapper());
// Get the code for the given builtin. Returns if able to resolve
// the function in the 'resolved' flag.

View File

@ -49,7 +49,7 @@ class SafepointGenerator : public CallWrapper {
deoptimization_index_(deoptimization_index) { }
virtual ~SafepointGenerator() { }
virtual void BeforeCall(int call_size) {
virtual void BeforeCall(int call_size) const {
ASSERT(call_size >= 0);
// Ensure that we have enough space after the previous safepoint position
// for the jump generated there.
@ -62,7 +62,7 @@ class SafepointGenerator : public CallWrapper {
}
}
virtual void AfterCall() {
virtual void AfterCall() const {
codegen_->RecordSafepoint(pointers_, deoptimization_index_);
}
@ -2562,7 +2562,7 @@ void LCodeGen::DoApplyArguments(LApplyArguments* instr) {
pointers,
env->deoptimization_index());
v8::internal::ParameterCount actual(rax);
__ InvokeFunction(function, actual, CALL_FUNCTION, &safepoint_generator);
__ InvokeFunction(function, actual, CALL_FUNCTION, safepoint_generator);
__ movq(rsi, Operand(rbp, StandardFrameConstants::kContextOffset));
}
@ -2969,7 +2969,7 @@ void LCodeGen::DoInvokeFunction(LInvokeFunction* instr) {
RegisterEnvironmentForDeoptimization(env);
SafepointGenerator generator(this, pointers, env->deoptimization_index());
ParameterCount count(instr->arity());
__ InvokeFunction(rdi, count, CALL_FUNCTION, &generator);
__ InvokeFunction(rdi, count, CALL_FUNCTION, generator);
__ movq(rsi, Operand(rbp, StandardFrameConstants::kContextOffset));
}
@ -4046,7 +4046,7 @@ void LCodeGen::DoDeleteProperty(LDeleteProperty* instr) {
pointers,
env->deoptimization_index());
__ Push(Smi::FromInt(strict_mode_flag()));
__ InvokeBuiltin(Builtins::DELETE, CALL_FUNCTION, &safepoint_generator);
__ InvokeBuiltin(Builtins::DELETE, CALL_FUNCTION, safepoint_generator);
}
@ -4066,7 +4066,7 @@ void LCodeGen::DoIn(LIn* instr) {
SafepointGenerator safepoint_generator(this,
pointers,
env->deoptimization_index());
__ InvokeBuiltin(Builtins::IN, CALL_FUNCTION, &safepoint_generator);
__ InvokeBuiltin(Builtins::IN, CALL_FUNCTION, safepoint_generator);
}

View File

@ -755,7 +755,7 @@ MaybeObject* MacroAssembler::TryJumpToExternalReference(
void MacroAssembler::InvokeBuiltin(Builtins::JavaScript id,
InvokeFlag flag,
CallWrapper* call_wrapper) {
const CallWrapper& call_wrapper) {
// Calls are not allowed in some stubs.
ASSERT(flag == JUMP_FUNCTION || allow_stub_calls());
@ -2056,7 +2056,7 @@ void MacroAssembler::InvokeCode(Register code,
const ParameterCount& expected,
const ParameterCount& actual,
InvokeFlag flag,
CallWrapper* call_wrapper) {
const CallWrapper& call_wrapper) {
NearLabel done;
InvokePrologue(expected,
actual,
@ -2066,9 +2066,9 @@ void MacroAssembler::InvokeCode(Register code,
flag,
call_wrapper);
if (flag == CALL_FUNCTION) {
if (call_wrapper != NULL) call_wrapper->BeforeCall(CallSize(code));
call_wrapper.BeforeCall(CallSize(code));
call(code);
if (call_wrapper != NULL) call_wrapper->AfterCall();
call_wrapper.AfterCall();
} else {
ASSERT(flag == JUMP_FUNCTION);
jmp(code);
@ -2082,7 +2082,7 @@ void MacroAssembler::InvokeCode(Handle<Code> code,
const ParameterCount& actual,
RelocInfo::Mode rmode,
InvokeFlag flag,
CallWrapper* call_wrapper) {
const CallWrapper& call_wrapper) {
NearLabel done;
Register dummy = rax;
InvokePrologue(expected,
@ -2093,9 +2093,9 @@ void MacroAssembler::InvokeCode(Handle<Code> code,
flag,
call_wrapper);
if (flag == CALL_FUNCTION) {
if (call_wrapper != NULL) call_wrapper->BeforeCall(CallSize(code));
call_wrapper.BeforeCall(CallSize(code));
Call(code, rmode);
if (call_wrapper != NULL) call_wrapper->AfterCall();
call_wrapper.AfterCall();
} else {
ASSERT(flag == JUMP_FUNCTION);
Jump(code, rmode);
@ -2107,7 +2107,7 @@ void MacroAssembler::InvokeCode(Handle<Code> code,
void MacroAssembler::InvokeFunction(Register function,
const ParameterCount& actual,
InvokeFlag flag,
CallWrapper* call_wrapper) {
const CallWrapper& call_wrapper) {
ASSERT(function.is(rdi));
movq(rdx, FieldOperand(function, JSFunction::kSharedFunctionInfoOffset));
movq(rsi, FieldOperand(function, JSFunction::kContextOffset));
@ -2125,7 +2125,7 @@ void MacroAssembler::InvokeFunction(Register function,
void MacroAssembler::InvokeFunction(JSFunction* function,
const ParameterCount& actual,
InvokeFlag flag,
CallWrapper* call_wrapper) {
const CallWrapper& call_wrapper) {
ASSERT(function->is_compiled());
// Get the function and setup the context.
Move(rdi, Handle<JSFunction>(function));

View File

@ -244,32 +244,32 @@ class MacroAssembler: public Assembler {
const ParameterCount& expected,
const ParameterCount& actual,
InvokeFlag flag,
CallWrapper* call_wrapper = NULL);
const CallWrapper& call_wrapper = NullCallWrapper());
void InvokeCode(Handle<Code> code,
const ParameterCount& expected,
const ParameterCount& actual,
RelocInfo::Mode rmode,
InvokeFlag flag,
CallWrapper* call_wrapper = NULL);
const CallWrapper& call_wrapper = NullCallWrapper());
// Invoke the JavaScript function in the given register. Changes the
// current context to the context in the function before invoking.
void InvokeFunction(Register function,
const ParameterCount& actual,
InvokeFlag flag,
CallWrapper* call_wrapper = NULL);
const CallWrapper& call_wrapper = NullCallWrapper());
void InvokeFunction(JSFunction* function,
const ParameterCount& actual,
InvokeFlag flag,
CallWrapper* call_wrapper = NULL);
const CallWrapper& call_wrapper = NullCallWrapper());
// Invoke specified builtin JavaScript function. Adds an entry to
// the unresolved list if the name does not resolve.
void InvokeBuiltin(Builtins::JavaScript id,
InvokeFlag flag,
CallWrapper* call_wrapper = NULL);
const CallWrapper& call_wrapper = NullCallWrapper());
// Store the function for the given builtin in the target register.
void GetBuiltinFunction(Register target, Builtins::JavaScript id);
@ -1126,7 +1126,7 @@ class MacroAssembler: public Assembler {
Register code_register,
LabelType* done,
InvokeFlag flag,
CallWrapper* call_wrapper);
const CallWrapper& call_wrapper);
// Activation support.
void EnterFrame(StackFrame::Type type);
@ -1936,7 +1936,7 @@ void MacroAssembler::InvokePrologue(const ParameterCount& expected,
Register code_register,
LabelType* done,
InvokeFlag flag,
CallWrapper* call_wrapper) {
const CallWrapper& call_wrapper) {
bool definitely_matches = false;
NearLabel invoke;
if (expected.is_immediate()) {
@ -1985,9 +1985,9 @@ void MacroAssembler::InvokePrologue(const ParameterCount& expected,
}
if (flag == CALL_FUNCTION) {
if (call_wrapper != NULL) call_wrapper->BeforeCall(CallSize(adaptor));
call_wrapper.BeforeCall(CallSize(adaptor));
Call(adaptor, RelocInfo::CODE_TARGET);
if (call_wrapper != NULL) call_wrapper->AfterCall();
call_wrapper.AfterCall();
jmp(done);
} else {
Jump(adaptor, RelocInfo::CODE_TARGET);