| Index: src/mips/code-stubs-mips.cc
|
| ===================================================================
|
| --- src/mips/code-stubs-mips.cc (revision 8778)
|
| +++ src/mips/code-stubs-mips.cc (working copy)
|
| @@ -1797,25 +1797,17 @@
|
| }
|
|
|
|
|
| -const char* UnaryOpStub::GetName() {
|
| - if (name_ != NULL) return name_;
|
| - const int kMaxNameLength = 100;
|
| - name_ = Isolate::Current()->bootstrapper()->AllocateAutoDeletedArray(
|
| - kMaxNameLength);
|
| - if (name_ == NULL) return "OOM";
|
| +void UnaryOpStub::PrintName(StringStream* stream) {
|
| const char* op_name = Token::Name(op_);
|
| const char* overwrite_name = NULL; // Make g++ happy.
|
| switch (mode_) {
|
| case UNARY_NO_OVERWRITE: overwrite_name = "Alloc"; break;
|
| case UNARY_OVERWRITE: overwrite_name = "Overwrite"; break;
|
| }
|
| -
|
| - OS::SNPrintF(Vector<char>(name_, kMaxNameLength),
|
| - "UnaryOpStub_%s_%s_%s",
|
| - op_name,
|
| - overwrite_name,
|
| - UnaryOpIC::GetName(operand_type_));
|
| - return name_;
|
| + stream->Add("UnaryOpStub_%s_%s_%s",
|
| + op_name,
|
| + overwrite_name,
|
| + UnaryOpIC::GetName(operand_type_));
|
| }
|
|
|
|
|
| @@ -2154,12 +2146,7 @@
|
| }
|
|
|
|
|
| -const char* BinaryOpStub::GetName() {
|
| - if (name_ != NULL) return name_;
|
| - const int kMaxNameLength = 100;
|
| - name_ = Isolate::Current()->bootstrapper()->AllocateAutoDeletedArray(
|
| - kMaxNameLength);
|
| - if (name_ == NULL) return "OOM";
|
| +void BinaryOpStub::PrintName(StringStream* stream) {
|
| const char* op_name = Token::Name(op_);
|
| const char* overwrite_name;
|
| switch (mode_) {
|
| @@ -2168,13 +2155,10 @@
|
| case OVERWRITE_LEFT: overwrite_name = "OverwriteLeft"; break;
|
| default: overwrite_name = "UnknownOverwrite"; break;
|
| }
|
| -
|
| - OS::SNPrintF(Vector<char>(name_, kMaxNameLength),
|
| - "BinaryOpStub_%s_%s_%s",
|
| - op_name,
|
| - overwrite_name,
|
| - BinaryOpIC::GetName(operands_type_));
|
| - return name_;
|
| + stream->Add("BinaryOpStub_%s_%s_%s",
|
| + op_name,
|
| + overwrite_name,
|
| + BinaryOpIC::GetName(operands_type_));
|
| }
|
|
|
|
|
| @@ -3743,24 +3727,22 @@
|
| // 4 args slots
|
| // args
|
|
|
| - #ifdef ENABLE_LOGGING_AND_PROFILING
|
| - // If this is the outermost JS call, set js_entry_sp value.
|
| - Label non_outermost_js;
|
| - ExternalReference js_entry_sp(Isolate::k_js_entry_sp_address,
|
| - masm->isolate());
|
| - __ li(t1, Operand(ExternalReference(js_entry_sp)));
|
| - __ lw(t2, MemOperand(t1));
|
| - __ Branch(&non_outermost_js, ne, t2, Operand(zero_reg));
|
| - __ sw(fp, MemOperand(t1));
|
| - __ li(t0, Operand(Smi::FromInt(StackFrame::OUTERMOST_JSENTRY_FRAME)));
|
| - Label cont;
|
| - __ b(&cont);
|
| - __ nop(); // Branch delay slot nop.
|
| - __ bind(&non_outermost_js);
|
| - __ li(t0, Operand(Smi::FromInt(StackFrame::INNER_JSENTRY_FRAME)));
|
| - __ bind(&cont);
|
| - __ push(t0);
|
| - #endif
|
| + // If this is the outermost JS call, set js_entry_sp value.
|
| + Label non_outermost_js;
|
| + ExternalReference js_entry_sp(Isolate::k_js_entry_sp_address,
|
| + masm->isolate());
|
| + __ li(t1, Operand(ExternalReference(js_entry_sp)));
|
| + __ lw(t2, MemOperand(t1));
|
| + __ Branch(&non_outermost_js, ne, t2, Operand(zero_reg));
|
| + __ sw(fp, MemOperand(t1));
|
| + __ li(t0, Operand(Smi::FromInt(StackFrame::OUTERMOST_JSENTRY_FRAME)));
|
| + Label cont;
|
| + __ b(&cont);
|
| + __ nop(); // Branch delay slot nop.
|
| + __ bind(&non_outermost_js);
|
| + __ li(t0, Operand(Smi::FromInt(StackFrame::INNER_JSENTRY_FRAME)));
|
| + __ bind(&cont);
|
| + __ push(t0);
|
|
|
| // Call a faked try-block that does the invoke.
|
| __ bal(&invoke); // bal exposes branch delay slot.
|
| @@ -3829,16 +3811,14 @@
|
| __ PopTryHandler();
|
|
|
| __ bind(&exit); // v0 holds result
|
| - #ifdef ENABLE_LOGGING_AND_PROFILING
|
| - // Check if the current stack frame is marked as the outermost JS frame.
|
| - Label non_outermost_js_2;
|
| - __ pop(t1);
|
| - __ Branch(&non_outermost_js_2, ne, t1,
|
| - Operand(Smi::FromInt(StackFrame::OUTERMOST_JSENTRY_FRAME)));
|
| - __ li(t1, Operand(ExternalReference(js_entry_sp)));
|
| - __ sw(zero_reg, MemOperand(t1));
|
| - __ bind(&non_outermost_js_2);
|
| - #endif
|
| + // Check if the current stack frame is marked as the outermost JS frame.
|
| + Label non_outermost_js_2;
|
| + __ pop(t1);
|
| + __ Branch(&non_outermost_js_2, ne, t1,
|
| + Operand(Smi::FromInt(StackFrame::OUTERMOST_JSENTRY_FRAME)));
|
| + __ li(t1, Operand(ExternalReference(js_entry_sp)));
|
| + __ sw(zero_reg, MemOperand(t1));
|
| + __ bind(&non_outermost_js_2);
|
|
|
| // Restore the top frame descriptors from the stack.
|
| __ pop(t1);
|
| @@ -4933,6 +4913,7 @@
|
| __ li(a0, Operand(argc_)); // Setup the number of arguments.
|
| __ mov(a2, zero_reg);
|
| __ GetBuiltinEntry(a3, Builtins::CALL_NON_FUNCTION);
|
| + __ SetCallKind(t1, CALL_AS_METHOD);
|
| __ Jump(masm->isolate()->builtins()->ArgumentsAdaptorTrampoline(),
|
| RelocInfo::CODE_TARGET);
|
| }
|
| @@ -4940,16 +4921,9 @@
|
|
|
| // Unfortunately you have to run without snapshots to see most of these
|
| // names in the profile since most compare stubs end up in the snapshot.
|
| -const char* CompareStub::GetName() {
|
| +void CompareStub::PrintName(StringStream* stream) {
|
| ASSERT((lhs_.is(a0) && rhs_.is(a1)) ||
|
| (lhs_.is(a1) && rhs_.is(a0)));
|
| -
|
| - if (name_ != NULL) return name_;
|
| - const int kMaxNameLength = 100;
|
| - name_ = Isolate::Current()->bootstrapper()->AllocateAutoDeletedArray(
|
| - kMaxNameLength);
|
| - if (name_ == NULL) return "OOM";
|
| -
|
| const char* cc_name;
|
| switch (cc_) {
|
| case lt: cc_name = "LT"; break;
|
| @@ -4960,40 +4934,14 @@
|
| case ne: cc_name = "NE"; break;
|
| default: cc_name = "UnknownCondition"; break;
|
| }
|
| -
|
| - const char* lhs_name = lhs_.is(a0) ? "_a0" : "_a1";
|
| - const char* rhs_name = rhs_.is(a0) ? "_a0" : "_a1";
|
| -
|
| - const char* strict_name = "";
|
| - if (strict_ && (cc_ == eq || cc_ == ne)) {
|
| - strict_name = "_STRICT";
|
| - }
|
| -
|
| - const char* never_nan_nan_name = "";
|
| - if (never_nan_nan_ && (cc_ == eq || cc_ == ne)) {
|
| - never_nan_nan_name = "_NO_NAN";
|
| - }
|
| -
|
| - const char* include_number_compare_name = "";
|
| - if (!include_number_compare_) {
|
| - include_number_compare_name = "_NO_NUMBER";
|
| - }
|
| -
|
| - const char* include_smi_compare_name = "";
|
| - if (!include_smi_compare_) {
|
| - include_smi_compare_name = "_NO_SMI";
|
| - }
|
| -
|
| - OS::SNPrintF(Vector<char>(name_, kMaxNameLength),
|
| - "CompareStub_%s%s%s%s%s%s",
|
| - cc_name,
|
| - lhs_name,
|
| - rhs_name,
|
| - strict_name,
|
| - never_nan_nan_name,
|
| - include_number_compare_name,
|
| - include_smi_compare_name);
|
| - return name_;
|
| + bool is_equality = cc_ == eq || cc_ == ne;
|
| + stream->Add("CompareStub_%s", cc_name);
|
| + stream->Add(lhs_.is(a0) ? "_a0" : "_a1");
|
| + stream->Add(rhs_.is(a0) ? "_a0" : "_a1");
|
| + if (strict_ && is_equality) stream->Add("_STRICT");
|
| + if (never_nan_nan_ && is_equality) stream->Add("_NO_NAN");
|
| + if (!include_number_compare_) stream->Add("_NO_NUMBER");
|
| + if (!include_smi_compare_) stream->Add("_NO_SMI");
|
| }
|
|
|
|
|
|
|