| Index: src/ia32/macro-assembler-ia32.cc
|
| diff --git a/src/ia32/macro-assembler-ia32.cc b/src/ia32/macro-assembler-ia32.cc
|
| index dd1ace91a7f4cd6a8b2ca016526ef5640c4e487c..1676a703489bacf5c50230bb7053e04b69d36577 100644
|
| --- a/src/ia32/macro-assembler-ia32.cc
|
| +++ b/src/ia32/macro-assembler-ia32.cc
|
| @@ -1594,33 +1594,12 @@ void MacroAssembler::CallStub(CodeStub* stub, unsigned ast_id) {
|
| }
|
|
|
|
|
| -MaybeObject* MacroAssembler::TryCallStub(CodeStub* stub) {
|
| - ASSERT(AllowThisStubCall(stub)); // Calls are not allowed in some stubs.
|
| - Object* result;
|
| - { MaybeObject* maybe_result = stub->TryGetCode();
|
| - if (!maybe_result->ToObject(&result)) return maybe_result;
|
| - }
|
| - call(Handle<Code>(Code::cast(result)), RelocInfo::CODE_TARGET);
|
| - return result;
|
| -}
|
| -
|
| -
|
| void MacroAssembler::TailCallStub(CodeStub* stub) {
|
| ASSERT(allow_stub_calls_ || stub->CompilingCallsToThisStubIsGCSafe());
|
| jmp(stub->GetCode(), RelocInfo::CODE_TARGET);
|
| }
|
|
|
|
|
| -MaybeObject* MacroAssembler::TryTailCallStub(CodeStub* stub) {
|
| - Object* result;
|
| - { MaybeObject* maybe_result = stub->TryGetCode();
|
| - if (!maybe_result->ToObject(&result)) return maybe_result;
|
| - }
|
| - jmp(Handle<Code>(Code::cast(result)), RelocInfo::CODE_TARGET);
|
| - return result;
|
| -}
|
| -
|
| -
|
| void MacroAssembler::StubReturn(int argc) {
|
| ASSERT(argc >= 1 && generating_stub());
|
| ret((argc - 1) * kPointerSize);
|
| @@ -1674,12 +1653,6 @@ void MacroAssembler::CallRuntimeSaveDoubles(Runtime::FunctionId id) {
|
| }
|
|
|
|
|
| -MaybeObject* MacroAssembler::TryCallRuntime(Runtime::FunctionId id,
|
| - int num_arguments) {
|
| - return TryCallRuntime(Runtime::FunctionForId(id), num_arguments);
|
| -}
|
| -
|
| -
|
| void MacroAssembler::CallRuntime(const Runtime::Function* f,
|
| int num_arguments) {
|
| // If the expected number of arguments of the runtime function is
|
| @@ -1701,26 +1674,6 @@ void MacroAssembler::CallRuntime(const Runtime::Function* f,
|
| }
|
|
|
|
|
| -MaybeObject* MacroAssembler::TryCallRuntime(const Runtime::Function* f,
|
| - int num_arguments) {
|
| - if (f->nargs >= 0 && f->nargs != num_arguments) {
|
| - IllegalOperation(num_arguments);
|
| - // Since we did not call the stub, there was no allocation failure.
|
| - // Return some non-failure object.
|
| - return isolate()->heap()->undefined_value();
|
| - }
|
| -
|
| - // TODO(1236192): Most runtime routines don't need the number of
|
| - // arguments passed in because it is constant. At some point we
|
| - // should remove this need and make the runtime routine entry code
|
| - // smarter.
|
| - Set(eax, Immediate(num_arguments));
|
| - mov(ebx, Immediate(ExternalReference(f, isolate())));
|
| - CEntryStub ces(1);
|
| - return TryCallStub(&ces);
|
| -}
|
| -
|
| -
|
| void MacroAssembler::CallExternalReference(ExternalReference ref,
|
| int num_arguments) {
|
| mov(eax, Immediate(num_arguments));
|
| @@ -1743,17 +1696,6 @@ void MacroAssembler::TailCallExternalReference(const ExternalReference& ext,
|
| }
|
|
|
|
|
| -MaybeObject* MacroAssembler::TryTailCallExternalReference(
|
| - const ExternalReference& ext, int num_arguments, int result_size) {
|
| - // TODO(1236192): Most runtime routines don't need the number of
|
| - // arguments passed in because it is constant. At some point we
|
| - // should remove this need and make the runtime routine entry code
|
| - // smarter.
|
| - Set(eax, Immediate(num_arguments));
|
| - return TryJumpToExternalReference(ext);
|
| -}
|
| -
|
| -
|
| void MacroAssembler::TailCallRuntime(Runtime::FunctionId fid,
|
| int num_arguments,
|
| int result_size) {
|
| @@ -1763,14 +1705,6 @@ void MacroAssembler::TailCallRuntime(Runtime::FunctionId fid,
|
| }
|
|
|
|
|
| -MaybeObject* MacroAssembler::TryTailCallRuntime(Runtime::FunctionId fid,
|
| - int num_arguments,
|
| - int result_size) {
|
| - return TryTailCallExternalReference(
|
| - ExternalReference(fid, isolate()), num_arguments, result_size);
|
| -}
|
| -
|
| -
|
| // If true, a Handle<T> returned by value from a function with cdecl calling
|
| // convention will be returned directly as a value of location_ field in a
|
| // register eax.
|
| @@ -1819,8 +1753,8 @@ void MacroAssembler::PrepareCallApiFunction(int argc) {
|
| }
|
|
|
|
|
| -MaybeObject* MacroAssembler::TryCallApiFunctionAndReturn(ApiFunction* function,
|
| - int stack_space) {
|
| +void MacroAssembler::CallApiFunctionAndReturn(Address function_address,
|
| + int stack_space) {
|
| ExternalReference next_address =
|
| ExternalReference::handle_scope_next_address();
|
| ExternalReference limit_address =
|
| @@ -1833,8 +1767,8 @@ MaybeObject* MacroAssembler::TryCallApiFunctionAndReturn(ApiFunction* function,
|
| mov(edi, Operand::StaticVariable(limit_address));
|
| add(Operand::StaticVariable(level_address), Immediate(1));
|
|
|
| - // Call the api function!
|
| - call(function->address(), RelocInfo::RUNTIME_ENTRY);
|
| + // Call the api function.
|
| + call(function_address, RelocInfo::RUNTIME_ENTRY);
|
|
|
| if (!kReturnHandlesDirectly) {
|
| // PrepareCallApiFunction saved pointer to the output slot into
|
| @@ -1872,11 +1806,8 @@ MaybeObject* MacroAssembler::TryCallApiFunctionAndReturn(ApiFunction* function,
|
| LeaveApiExitFrame();
|
| ret(stack_space * kPointerSize);
|
| bind(&promote_scheduled_exception);
|
| - MaybeObject* result =
|
| - TryTailCallRuntime(Runtime::kPromoteScheduledException, 0, 1);
|
| - if (result->IsFailure()) {
|
| - return result;
|
| - }
|
| + TailCallRuntime(Runtime::kPromoteScheduledException, 0, 1);
|
| +
|
| bind(&empty_handle);
|
| // It was zero; the result is undefined.
|
| mov(eax, isolate()->factory()->undefined_value());
|
| @@ -1893,8 +1824,6 @@ MaybeObject* MacroAssembler::TryCallApiFunctionAndReturn(ApiFunction* function,
|
| call(eax);
|
| mov(eax, edi);
|
| jmp(&leave_exit_frame);
|
| -
|
| - return result;
|
| }
|
|
|
|
|
| @@ -1906,15 +1835,6 @@ void MacroAssembler::JumpToExternalReference(const ExternalReference& ext) {
|
| }
|
|
|
|
|
| -MaybeObject* MacroAssembler::TryJumpToExternalReference(
|
| - const ExternalReference& ext) {
|
| - // Set the entry point and jump to the C entry runtime stub.
|
| - mov(ebx, Immediate(ext));
|
| - CEntryStub ces(1);
|
| - return TryTailCallStub(&ces);
|
| -}
|
| -
|
| -
|
| void MacroAssembler::SetCallKind(Register dst, CallKind call_kind) {
|
| // This macro takes the dst register to make the code more readable
|
| // at the call sites. However, the dst register has to be ecx to
|
| @@ -2079,7 +1999,7 @@ void MacroAssembler::InvokeFunction(Register fun,
|
| }
|
|
|
|
|
| -void MacroAssembler::InvokeFunction(JSFunction* function,
|
| +void MacroAssembler::InvokeFunction(Handle<JSFunction> function,
|
| const ParameterCount& actual,
|
| InvokeFlag flag,
|
| const CallWrapper& call_wrapper,
|
| @@ -2088,7 +2008,7 @@ void MacroAssembler::InvokeFunction(JSFunction* function,
|
| ASSERT(flag == JUMP_FUNCTION || has_frame());
|
|
|
| // Get the function and setup the context.
|
| - mov(edi, Immediate(Handle<JSFunction>(function)));
|
| + mov(edi, Immediate(function));
|
| mov(esi, FieldOperand(edi, JSFunction::kContextOffset));
|
|
|
| ParameterCount expected(function->shared()->formal_parameter_count());
|
|
|