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()); |