| Index: src/ia32/macro-assembler-ia32.cc
|
| ===================================================================
|
| --- src/ia32/macro-assembler-ia32.cc (revision 5298)
|
| +++ src/ia32/macro-assembler-ia32.cc (working copy)
|
| @@ -1298,11 +1298,10 @@
|
| mov(esi, FieldOperand(edi, JSFunction::kContextOffset));
|
| mov(ebx, FieldOperand(edx, SharedFunctionInfo::kFormalParameterCountOffset));
|
| SmiUntag(ebx);
|
| - mov(edx, FieldOperand(edi, JSFunction::kCodeOffset));
|
| - lea(edx, FieldOperand(edx, Code::kHeaderSize));
|
|
|
| ParameterCount expected(ebx);
|
| - InvokeCode(Operand(edx), expected, actual, flag);
|
| + InvokeCode(FieldOperand(edi, JSFunction::kCodeEntryOffset),
|
| + expected, actual, flag);
|
| }
|
|
|
|
|
| @@ -1313,7 +1312,6 @@
|
| // Get the function and setup the context.
|
| mov(edi, Immediate(Handle<JSFunction>(function)));
|
| mov(esi, FieldOperand(edi, JSFunction::kContextOffset));
|
| -
|
| // Invoke the cached code.
|
| Handle<Code> code(function->code());
|
| ParameterCount expected(function->shared()->formal_parameter_count());
|
| @@ -1329,33 +1327,26 @@
|
| // arguments match the expected number of arguments. Fake a
|
| // parameter count to avoid emitting code to do the check.
|
| ParameterCount expected(0);
|
| - GetBuiltinEntry(edx, id);
|
| - InvokeCode(Operand(edx), expected, expected, flag);
|
| + GetBuiltinFunction(edi, id);
|
| + InvokeCode(FieldOperand(edi, JSFunction::kCodeEntryOffset),
|
| + expected, expected, flag);
|
| }
|
|
|
| -
|
| -void MacroAssembler::GetBuiltinEntry(Register target, Builtins::JavaScript id) {
|
| - ASSERT(!target.is(edi));
|
| -
|
| - // Load the builtins object into target register.
|
| +void MacroAssembler::GetBuiltinFunction(Register target,
|
| + Builtins::JavaScript id) {
|
| + // Load the JavaScript builtin function from the builtins object.
|
| mov(target, Operand(esi, Context::SlotOffset(Context::GLOBAL_INDEX)));
|
| mov(target, FieldOperand(target, GlobalObject::kBuiltinsOffset));
|
| + mov(target, FieldOperand(target,
|
| + JSBuiltinsObject::OffsetOfFunctionWithId(id)));
|
| +}
|
|
|
| +void MacroAssembler::GetBuiltinEntry(Register target, Builtins::JavaScript id) {
|
| + ASSERT(!target.is(edi));
|
| // Load the JavaScript builtin function from the builtins object.
|
| - mov(edi, FieldOperand(target, JSBuiltinsObject::OffsetOfFunctionWithId(id)));
|
| -
|
| - // Load the code entry point from the builtins object.
|
| - mov(target, FieldOperand(target, JSBuiltinsObject::OffsetOfCodeWithId(id)));
|
| - if (FLAG_debug_code) {
|
| - // Make sure the code objects in the builtins object and in the
|
| - // builtin function are the same.
|
| - push(target);
|
| - mov(target, FieldOperand(edi, JSFunction::kCodeOffset));
|
| - cmp(target, Operand(esp, 0));
|
| - Assert(equal, "Builtin code object changed");
|
| - pop(target);
|
| - }
|
| - lea(target, FieldOperand(target, Code::kHeaderSize));
|
| + GetBuiltinFunction(edi, id);
|
| + // Load the code entry point from the function into the target register.
|
| + mov(target, FieldOperand(edi, JSFunction::kCodeEntryOffset));
|
| }
|
|
|
|
|
|
|