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

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

Issue 523051: Make the ResolvePossiblyDirectEval faster by avoiding the... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 10 years, 11 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 | « no previous file | src/bootstrapper.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 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 2874 matching lines...) Expand 10 before | Expand all | Expand 10 after
2885 // Prepare stack for call to ResolvePossiblyDirectEval. 2885 // Prepare stack for call to ResolvePossiblyDirectEval.
2886 __ ldr(r1, MemOperand(sp, arg_count * kPointerSize + kPointerSize)); 2886 __ ldr(r1, MemOperand(sp, arg_count * kPointerSize + kPointerSize));
2887 frame_->EmitPush(r1); 2887 frame_->EmitPush(r1);
2888 if (arg_count > 0) { 2888 if (arg_count > 0) {
2889 __ ldr(r1, MemOperand(sp, arg_count * kPointerSize)); 2889 __ ldr(r1, MemOperand(sp, arg_count * kPointerSize));
2890 frame_->EmitPush(r1); 2890 frame_->EmitPush(r1);
2891 } else { 2891 } else {
2892 frame_->EmitPush(r2); 2892 frame_->EmitPush(r2);
2893 } 2893 }
2894 2894
2895 // Push the receiver.
2896 __ ldr(r1, frame_->Receiver());
2897 frame_->EmitPush(r1);
2898
2895 // Resolve the call. 2899 // Resolve the call.
2896 frame_->CallRuntime(Runtime::kResolvePossiblyDirectEval, 2); 2900 frame_->CallRuntime(Runtime::kResolvePossiblyDirectEval, 3);
2897 2901
2898 // Touch up stack with the right values for the function and the receiver. 2902 // Touch up stack with the right values for the function and the receiver.
2899 __ ldr(r1, FieldMemOperand(r0, FixedArray::kHeaderSize)); 2903 __ str(r0, MemOperand(sp, (arg_count + 1) * kPointerSize));
2900 __ str(r1, MemOperand(sp, (arg_count + 1) * kPointerSize));
2901 __ ldr(r1, FieldMemOperand(r0, FixedArray::kHeaderSize + kPointerSize));
2902 __ str(r1, MemOperand(sp, arg_count * kPointerSize)); 2904 __ str(r1, MemOperand(sp, arg_count * kPointerSize));
2903 2905
2904 // Call the function. 2906 // Call the function.
2905 CodeForSourcePosition(node->position()); 2907 CodeForSourcePosition(node->position());
2906 2908
2907 InLoopFlag in_loop = loop_nesting() > 0 ? IN_LOOP : NOT_IN_LOOP; 2909 InLoopFlag in_loop = loop_nesting() > 0 ? IN_LOOP : NOT_IN_LOOP;
2908 CallFunctionStub call_function(arg_count, in_loop); 2910 CallFunctionStub call_function(arg_count, in_loop);
2909 frame_->CallStub(&call_function, arg_count + 1); 2911 frame_->CallStub(&call_function, arg_count + 1);
2910 2912
2911 __ ldr(cp, frame_->Context()); 2913 __ ldr(cp, frame_->Context());
(...skipping 3551 matching lines...) Expand 10 before | Expand all | Expand 10 after
6463 int CompareStub::MinorKey() { 6465 int CompareStub::MinorKey() {
6464 // Encode the two parameters in a unique 16 bit value. 6466 // Encode the two parameters in a unique 16 bit value.
6465 ASSERT(static_cast<unsigned>(cc_) >> 28 < (1 << 15)); 6467 ASSERT(static_cast<unsigned>(cc_) >> 28 < (1 << 15));
6466 return (static_cast<unsigned>(cc_) >> 27) | (strict_ ? 1 : 0); 6468 return (static_cast<unsigned>(cc_) >> 27) | (strict_ ? 1 : 0);
6467 } 6469 }
6468 6470
6469 6471
6470 #undef __ 6472 #undef __
6471 6473
6472 } } // namespace v8::internal 6474 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | src/bootstrapper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698