Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(364)

Side by Side Diff: src/arm/full-codegen-arm.cc

Issue 844006: Merge changes up to V8 version 2.1.3 into the partial snapshots (Closed) Base URL: http://v8.googlecode.com/svn/branches/experimental/partial_snapshots/
Patch Set: Created 10 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/arm/fast-codegen-arm.cc ('k') | src/arm/ic-arm.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2009 the V8 project authors. All rights reserved. 1 // Copyright 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 14 matching lines...) Expand all
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 27
28 #include "v8.h" 28 #include "v8.h"
29 29
30 #include "codegen-inl.h" 30 #include "codegen-inl.h"
31 #include "compiler.h" 31 #include "compiler.h"
32 #include "debug.h" 32 #include "debug.h"
33 #include "full-codegen.h" 33 #include "full-codegen.h"
34 #include "parser.h" 34 #include "parser.h"
35 #include "scopes.h"
35 36
36 namespace v8 { 37 namespace v8 {
37 namespace internal { 38 namespace internal {
38 39
39 #define __ ACCESS_MASM(masm_) 40 #define __ ACCESS_MASM(masm_)
40 41
41 // Generate code for a JS function. On entry to the function the receiver 42 // Generate code for a JS function. On entry to the function the receiver
42 // and arguments have been pushed on the stack left to right. The actual 43 // and arguments have been pushed on the stack left to right. The actual
43 // argument count matches the formal parameter count expected by the 44 // argument count matches the formal parameter count expected by the
44 // function. 45 // function.
45 // 46 //
46 // The live registers are: 47 // The live registers are:
47 // o r1: the JS function object being called (ie, ourselves) 48 // o r1: the JS function object being called (ie, ourselves)
48 // o cp: our context 49 // o cp: our context
49 // o fp: our caller's frame pointer 50 // o fp: our caller's frame pointer
50 // o sp: stack pointer 51 // o sp: stack pointer
51 // o lr: return address 52 // o lr: return address
52 // 53 //
53 // The function builds a JS frame. Please see JavaScriptFrameConstants in 54 // The function builds a JS frame. Please see JavaScriptFrameConstants in
54 // frames-arm.h for its layout. 55 // frames-arm.h for its layout.
55 void FullCodeGenerator::Generate(CompilationInfo* info, Mode mode) { 56 void FullCodeGenerator::Generate(CompilationInfo* info, Mode mode) {
56 ASSERT(info_ == NULL); 57 ASSERT(info_ == NULL);
57 info_ = info; 58 info_ = info;
58 SetFunctionPosition(function()); 59 SetFunctionPosition(function());
60 Comment cmnt(masm_, "[ function compiled by full code generator");
59 61
60 if (mode == PRIMARY) { 62 if (mode == PRIMARY) {
61 int locals_count = scope()->num_stack_slots(); 63 int locals_count = scope()->num_stack_slots();
62 64
63 __ stm(db_w, sp, r1.bit() | cp.bit() | fp.bit() | lr.bit()); 65 __ stm(db_w, sp, r1.bit() | cp.bit() | fp.bit() | lr.bit());
64 if (locals_count > 0) { 66 if (locals_count > 0) {
65 // Load undefined value here, so the value is ready for the loop 67 // Load undefined value here, so the value is ready for the loop
66 // below. 68 // below.
67 __ LoadRoot(ip, Heap::kUndefinedValueRootIndex); 69 __ LoadRoot(ip, Heap::kUndefinedValueRootIndex);
68 } 70 }
(...skipping 1787 matching lines...) Expand 10 before | Expand all | Expand 10 after
1856 __ pop(result_register()); 1858 __ pop(result_register());
1857 ASSERT_EQ(1, kSmiTagSize + kSmiShiftSize); 1859 ASSERT_EQ(1, kSmiTagSize + kSmiShiftSize);
1858 __ mov(r1, Operand(r1, ASR, 1)); // Un-smi-tag value. 1860 __ mov(r1, Operand(r1, ASR, 1)); // Un-smi-tag value.
1859 __ add(pc, r1, Operand(masm_->CodeObject())); 1861 __ add(pc, r1, Operand(masm_->CodeObject()));
1860 } 1862 }
1861 1863
1862 1864
1863 #undef __ 1865 #undef __
1864 1866
1865 } } // namespace v8::internal 1867 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/arm/fast-codegen-arm.cc ('k') | src/arm/ic-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698