Index: src/arm/codegen-arm.cc |
=================================================================== |
--- src/arm/codegen-arm.cc (revision 2034) |
+++ src/arm/codegen-arm.cc (working copy) |
@@ -1057,12 +1057,14 @@ |
class CallFunctionStub: public CodeStub { |
public: |
- explicit CallFunctionStub(int argc) : argc_(argc) {} |
+ CallFunctionStub(int argc, InlineCacheInLoop in_loop) |
Kevin Millikin (Chromium)
2009/05/25 11:00:42
I like a name that indicates flaggishness. InLoop
|
+ : argc_(argc), in_loop_(in_loop) {} |
void Generate(MacroAssembler* masm); |
private: |
int argc_; |
+ InlineCacheInLoop in_loop_; |
#if defined(DEBUG) |
void Print() { PrintF("CallFunctionStub (argc %d)\n", argc_); } |
@@ -1070,6 +1072,7 @@ |
Major MajorKey() { return CallFunction; } |
int MinorKey() { return argc_; } |
+ InlineCacheInLoop InLoop() { return in_loop_; } |
}; |
@@ -1087,7 +1090,8 @@ |
CodeForSourcePosition(position); |
// Use the shared code stub to call the function. |
- CallFunctionStub call_function(arg_count); |
+ InlineCacheInLoop in_loop = loop_nesting() > 0 ? IN_LOOP : NOT_IN_LOOP; |
+ CallFunctionStub call_function(arg_count, in_loop); |
frame_->CallStub(&call_function, arg_count + 1); |
// Restore context and pop function from the stack. |
@@ -3050,7 +3054,8 @@ |
} |
// Setup the receiver register and call the IC initialization code. |
- Handle<Code> stub = ComputeCallInitialize(arg_count); |
+ InlineCacheInLoop in_loop = loop_nesting() > 0 ? IN_LOOP : NOT_IN_LOOP; |
+ Handle<Code> stub = ComputeCallInitialize(arg_count, in_loop); |
CodeForSourcePosition(node->position()); |
frame_->CallCodeObject(stub, RelocInfo::CODE_TARGET_CONTEXT, |
arg_count + 1); |
@@ -3101,7 +3106,8 @@ |
} |
// Set the receiver register and call the IC initialization code. |
- Handle<Code> stub = ComputeCallInitialize(arg_count); |
+ InlineCacheInLoop in_loop = loop_nesting() > 0 ? IN_LOOP : NOT_IN_LOOP; |
+ Handle<Code> stub = ComputeCallInitialize(arg_count, in_loop); |
CodeForSourcePosition(node->position()); |
frame_->CallCodeObject(stub, RelocInfo::CODE_TARGET, arg_count + 1); |
__ ldr(cp, frame_->Context()); |
@@ -3199,7 +3205,8 @@ |
// Call the function. |
CodeForSourcePosition(node->position()); |
- CallFunctionStub call_function(arg_count); |
+ InlineCacheInLoop in_loop = loop_nesting() > 0 ? IN_LOOP : NOT_IN_LOOP; |
+ CallFunctionStub call_function(arg_count, in_loop); |
frame_->CallStub(&call_function, arg_count + 1); |
__ ldr(cp, frame_->Context()); |
@@ -3461,7 +3468,8 @@ |
if (function == NULL) { |
// Call the JS runtime function. |
- Handle<Code> stub = ComputeCallInitialize(arg_count); |
+ InlineCacheInLoop in_loop = loop_nesting() > 0 ? IN_LOOP : NOT_IN_LOOP; |
+ Handle<Code> stub = ComputeCallInitialize(arg_count, in_loop); |
frame_->CallCodeObject(stub, RelocInfo::CODE_TARGET, arg_count + 1); |
__ ldr(cp, frame_->Context()); |
frame_->Drop(); |