OLD | NEW |
1 // Copyright 2006-2009 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2009 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 739 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
750 Register expected_reg = r2; | 750 Register expected_reg = r2; |
751 Register code_reg = r3; | 751 Register code_reg = r3; |
752 | 752 |
753 ldr(code_reg, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset)); | 753 ldr(code_reg, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset)); |
754 ldr(cp, FieldMemOperand(r1, JSFunction::kContextOffset)); | 754 ldr(cp, FieldMemOperand(r1, JSFunction::kContextOffset)); |
755 ldr(expected_reg, | 755 ldr(expected_reg, |
756 FieldMemOperand(code_reg, | 756 FieldMemOperand(code_reg, |
757 SharedFunctionInfo::kFormalParameterCountOffset)); | 757 SharedFunctionInfo::kFormalParameterCountOffset)); |
758 mov(expected_reg, Operand(expected_reg, ASR, kSmiTagSize)); | 758 mov(expected_reg, Operand(expected_reg, ASR, kSmiTagSize)); |
759 ldr(code_reg, | 759 ldr(code_reg, |
760 MemOperand(code_reg, SharedFunctionInfo::kCodeOffset - kHeapObjectTag)); | 760 MemOperand(r1, JSFunction::kCodeOffset - kHeapObjectTag)); |
761 add(code_reg, code_reg, Operand(Code::kHeaderSize - kHeapObjectTag)); | 761 add(code_reg, code_reg, Operand(Code::kHeaderSize - kHeapObjectTag)); |
762 | 762 |
763 ParameterCount expected(expected_reg); | 763 ParameterCount expected(expected_reg); |
764 InvokeCode(code_reg, expected, actual, flag); | 764 InvokeCode(code_reg, expected, actual, flag); |
765 } | 765 } |
766 | 766 |
767 | 767 |
768 void MacroAssembler::InvokeFunction(JSFunction* function, | 768 void MacroAssembler::InvokeFunction(JSFunction* function, |
769 const ParameterCount& actual, | 769 const ParameterCount& actual, |
770 InvokeFlag flag) { | 770 InvokeFlag flag) { |
(...skipping 730 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1501 ldr(r1, FieldMemOperand(target, | 1501 ldr(r1, FieldMemOperand(target, |
1502 JSBuiltinsObject::OffsetOfFunctionWithId(id))); | 1502 JSBuiltinsObject::OffsetOfFunctionWithId(id))); |
1503 | 1503 |
1504 // Load the code entry point from the builtins object. | 1504 // Load the code entry point from the builtins object. |
1505 ldr(target, FieldMemOperand(target, | 1505 ldr(target, FieldMemOperand(target, |
1506 JSBuiltinsObject::OffsetOfCodeWithId(id))); | 1506 JSBuiltinsObject::OffsetOfCodeWithId(id))); |
1507 if (FLAG_debug_code) { | 1507 if (FLAG_debug_code) { |
1508 // Make sure the code objects in the builtins object and in the | 1508 // Make sure the code objects in the builtins object and in the |
1509 // builtin function are the same. | 1509 // builtin function are the same. |
1510 push(r1); | 1510 push(r1); |
1511 ldr(r1, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset)); | 1511 ldr(r1, FieldMemOperand(r1, JSFunction::kCodeOffset)); |
1512 ldr(r1, FieldMemOperand(r1, SharedFunctionInfo::kCodeOffset)); | |
1513 cmp(r1, target); | 1512 cmp(r1, target); |
1514 Assert(eq, "Builtin code object changed"); | 1513 Assert(eq, "Builtin code object changed"); |
1515 pop(r1); | 1514 pop(r1); |
1516 } | 1515 } |
1517 add(target, target, Operand(Code::kHeaderSize - kHeapObjectTag)); | 1516 add(target, target, Operand(Code::kHeaderSize - kHeapObjectTag)); |
1518 } | 1517 } |
1519 | 1518 |
1520 | 1519 |
1521 void MacroAssembler::SetCounter(StatsCounter* counter, int value, | 1520 void MacroAssembler::SetCounter(StatsCounter* counter, int value, |
1522 Register scratch1, Register scratch2) { | 1521 Register scratch1, Register scratch2) { |
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1911 | 1910 |
1912 void CodePatcher::Emit(Address addr) { | 1911 void CodePatcher::Emit(Address addr) { |
1913 masm()->emit(reinterpret_cast<Instr>(addr)); | 1912 masm()->emit(reinterpret_cast<Instr>(addr)); |
1914 } | 1913 } |
1915 #endif // ENABLE_DEBUGGER_SUPPORT | 1914 #endif // ENABLE_DEBUGGER_SUPPORT |
1916 | 1915 |
1917 | 1916 |
1918 } } // namespace v8::internal | 1917 } } // namespace v8::internal |
1919 | 1918 |
1920 #endif // V8_TARGET_ARCH_ARM | 1919 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |