Commit 6cf22a60 authored by plind44@gmail.com's avatar plind44@gmail.com

MIPS: Eliminate extended mode, and other modes clean-up

Port r19800 (4402a23)

Original commit message:
- Merge LanguageMode and StrictModeFlag enums
- Make harmony-scoping depend only on strict mode
- Free some bits on the way
- Plus additional clean-up and renaming

BUG=

Review URL: https://codereview.chromium.org/195693002

Patch from Balazs Kilvady <kilvadyb@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19828 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 0896bd70
...@@ -2455,7 +2455,7 @@ void ArgumentsAccessStub::GenerateNewSloppyFast(MacroAssembler* masm) { ...@@ -2455,7 +2455,7 @@ void ArgumentsAccessStub::GenerateNewSloppyFast(MacroAssembler* masm) {
__ Addu(t5, t5, Operand(FixedArray::kHeaderSize)); __ Addu(t5, t5, Operand(FixedArray::kHeaderSize));
// 3. Arguments object. // 3. Arguments object.
__ Addu(t5, t5, Operand(Heap::kArgumentsObjectSize)); __ Addu(t5, t5, Operand(Heap::kSloppyArgumentsObjectSize));
// Do the allocation of all three objects in one go. // Do the allocation of all three objects in one go.
__ Allocate(t5, v0, a3, t0, &runtime, TAG_OBJECT); __ Allocate(t5, v0, a3, t0, &runtime, TAG_OBJECT);
...@@ -2464,7 +2464,7 @@ void ArgumentsAccessStub::GenerateNewSloppyFast(MacroAssembler* masm) { ...@@ -2464,7 +2464,7 @@ void ArgumentsAccessStub::GenerateNewSloppyFast(MacroAssembler* masm) {
// a2 = argument count (tagged) // a2 = argument count (tagged)
// Get the arguments boilerplate from the current native context into t0. // Get the arguments boilerplate from the current native context into t0.
const int kNormalOffset = const int kNormalOffset =
Context::SlotOffset(Context::ARGUMENTS_BOILERPLATE_INDEX); Context::SlotOffset(Context::SLOPPY_ARGUMENTS_BOILERPLATE_INDEX);
const int kAliasedOffset = const int kAliasedOffset =
Context::SlotOffset(Context::ALIASED_ARGUMENTS_BOILERPLATE_INDEX); Context::SlotOffset(Context::ALIASED_ARGUMENTS_BOILERPLATE_INDEX);
...@@ -2505,7 +2505,7 @@ void ArgumentsAccessStub::GenerateNewSloppyFast(MacroAssembler* masm) { ...@@ -2505,7 +2505,7 @@ void ArgumentsAccessStub::GenerateNewSloppyFast(MacroAssembler* masm) {
// Set up the elements pointer in the allocated arguments object. // Set up the elements pointer in the allocated arguments object.
// If we allocated a parameter map, t0 will point there, otherwise // If we allocated a parameter map, t0 will point there, otherwise
// it will point to the backing store. // it will point to the backing store.
__ Addu(t0, v0, Operand(Heap::kArgumentsObjectSize)); __ Addu(t0, v0, Operand(Heap::kSloppyArgumentsObjectSize));
__ sw(t0, FieldMemOperand(v0, JSObject::kElementsOffset)); __ sw(t0, FieldMemOperand(v0, JSObject::kElementsOffset));
// v0 = address of new object (tagged) // v0 = address of new object (tagged)
...@@ -2646,7 +2646,7 @@ void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) { ...@@ -2646,7 +2646,7 @@ void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) {
__ Addu(a1, a1, Operand(FixedArray::kHeaderSize / kPointerSize)); __ Addu(a1, a1, Operand(FixedArray::kHeaderSize / kPointerSize));
__ bind(&add_arguments_object); __ bind(&add_arguments_object);
__ Addu(a1, a1, Operand(Heap::kArgumentsObjectSizeStrict / kPointerSize)); __ Addu(a1, a1, Operand(Heap::kStrictArgumentsObjectSize / kPointerSize));
// Do the allocation of both objects in one go. // Do the allocation of both objects in one go.
__ Allocate(a1, v0, a2, a3, &runtime, __ Allocate(a1, v0, a2, a3, &runtime,
...@@ -2656,7 +2656,7 @@ void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) { ...@@ -2656,7 +2656,7 @@ void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) {
__ lw(t0, MemOperand(cp, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX))); __ lw(t0, MemOperand(cp, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX)));
__ lw(t0, FieldMemOperand(t0, GlobalObject::kNativeContextOffset)); __ lw(t0, FieldMemOperand(t0, GlobalObject::kNativeContextOffset));
__ lw(t0, MemOperand(t0, Context::SlotOffset( __ lw(t0, MemOperand(t0, Context::SlotOffset(
Context::STRICT_MODE_ARGUMENTS_BOILERPLATE_INDEX))); Context::STRICT_ARGUMENTS_BOILERPLATE_INDEX)));
// Copy the JS object part. // Copy the JS object part.
__ CopyFields(v0, t0, a3.bit(), JSObject::kHeaderSize / kPointerSize); __ CopyFields(v0, t0, a3.bit(), JSObject::kHeaderSize / kPointerSize);
...@@ -2675,7 +2675,7 @@ void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) { ...@@ -2675,7 +2675,7 @@ void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) {
// Set up the elements pointer in the allocated arguments object and // Set up the elements pointer in the allocated arguments object and
// initialize the header in the elements fixed array. // initialize the header in the elements fixed array.
__ Addu(t0, v0, Operand(Heap::kArgumentsObjectSizeStrict)); __ Addu(t0, v0, Operand(Heap::kStrictArgumentsObjectSize));
__ sw(t0, FieldMemOperand(v0, JSObject::kElementsOffset)); __ sw(t0, FieldMemOperand(v0, JSObject::kElementsOffset));
__ LoadRoot(a3, Heap::kFixedArrayMapRootIndex); __ LoadRoot(a3, Heap::kFixedArrayMapRootIndex);
__ sw(a3, FieldMemOperand(t0, FixedArray::kMapOffset)); __ sw(a3, FieldMemOperand(t0, FixedArray::kMapOffset));
......
This diff is collapsed.
...@@ -803,7 +803,7 @@ void KeyedLoadIC::GenerateString(MacroAssembler* masm) { ...@@ -803,7 +803,7 @@ void KeyedLoadIC::GenerateString(MacroAssembler* masm) {
void KeyedStoreIC::GenerateRuntimeSetProperty(MacroAssembler* masm, void KeyedStoreIC::GenerateRuntimeSetProperty(MacroAssembler* masm,
StrictModeFlag strict_mode) { StrictMode strict_mode) {
// ---------- S t a t e -------------- // ---------- S t a t e --------------
// -- a0 : value // -- a0 : value
// -- a1 : key // -- a1 : key
...@@ -995,7 +995,7 @@ static void KeyedStoreGenerateGenericHelper( ...@@ -995,7 +995,7 @@ static void KeyedStoreGenerateGenericHelper(
void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm, void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm,
StrictModeFlag strict_mode) { StrictMode strict_mode) {
// ---------- S t a t e -------------- // ---------- S t a t e --------------
// -- a0 : value // -- a0 : value
// -- a1 : key // -- a1 : key
...@@ -1238,7 +1238,7 @@ void StoreIC::GenerateNormal(MacroAssembler* masm) { ...@@ -1238,7 +1238,7 @@ void StoreIC::GenerateNormal(MacroAssembler* masm) {
void StoreIC::GenerateRuntimeSetProperty(MacroAssembler* masm, void StoreIC::GenerateRuntimeSetProperty(MacroAssembler* masm,
StrictModeFlag strict_mode) { StrictMode strict_mode) {
// ----------- S t a t e ------------- // ----------- S t a t e -------------
// -- a0 : value // -- a0 : value
// -- a1 : receiver // -- a1 : receiver
......
...@@ -150,7 +150,7 @@ bool LCodeGen::GeneratePrologue() { ...@@ -150,7 +150,7 @@ bool LCodeGen::GeneratePrologue() {
// global proxy when called as functions (without an explicit receiver // global proxy when called as functions (without an explicit receiver
// object). // object).
if (info_->this_has_uses() && if (info_->this_has_uses() &&
info_->is_sloppy_mode() && info_->strict_mode() == SLOPPY &&
!info_->is_native()) { !info_->is_native()) {
Label ok; Label ok;
int receiver_offset = info_->scope()->num_parameters() * kPointerSize; int receiver_offset = info_->scope()->num_parameters() * kPointerSize;
...@@ -4007,8 +4007,7 @@ void LCodeGen::DoStoreNamedGeneric(LStoreNamedGeneric* instr) { ...@@ -4007,8 +4007,7 @@ void LCodeGen::DoStoreNamedGeneric(LStoreNamedGeneric* instr) {
// Name is always in a2. // Name is always in a2.
__ li(a2, Operand(instr->name())); __ li(a2, Operand(instr->name()));
Handle<Code> ic = StoreIC::initialize_stub(isolate(), Handle<Code> ic = StoreIC::initialize_stub(isolate(), instr->strict_mode());
instr->strict_mode_flag());
CallCode(ic, RelocInfo::CODE_TARGET, instr); CallCode(ic, RelocInfo::CODE_TARGET, instr);
} }
...@@ -4264,7 +4263,7 @@ void LCodeGen::DoStoreKeyedGeneric(LStoreKeyedGeneric* instr) { ...@@ -4264,7 +4263,7 @@ void LCodeGen::DoStoreKeyedGeneric(LStoreKeyedGeneric* instr) {
ASSERT(ToRegister(instr->key()).is(a1)); ASSERT(ToRegister(instr->key()).is(a1));
ASSERT(ToRegister(instr->value()).is(a0)); ASSERT(ToRegister(instr->value()).is(a0));
Handle<Code> ic = (instr->strict_mode_flag() == kStrictMode) Handle<Code> ic = (instr->strict_mode() == STRICT)
? isolate()->builtins()->KeyedStoreIC_Initialize_Strict() ? isolate()->builtins()->KeyedStoreIC_Initialize_Strict()
: isolate()->builtins()->KeyedStoreIC_Initialize(); : isolate()->builtins()->KeyedStoreIC_Initialize();
CallCode(ic, RelocInfo::CODE_TARGET, instr); CallCode(ic, RelocInfo::CODE_TARGET, instr);
...@@ -5325,7 +5324,7 @@ void LCodeGen::DoFunctionLiteral(LFunctionLiteral* instr) { ...@@ -5325,7 +5324,7 @@ void LCodeGen::DoFunctionLiteral(LFunctionLiteral* instr) {
// space for nested functions that don't need literals cloning. // space for nested functions that don't need literals cloning.
bool pretenure = instr->hydrogen()->pretenure(); bool pretenure = instr->hydrogen()->pretenure();
if (!pretenure && instr->hydrogen()->has_no_literals()) { if (!pretenure && instr->hydrogen()->has_no_literals()) {
FastNewClosureStub stub(instr->hydrogen()->language_mode(), FastNewClosureStub stub(instr->hydrogen()->strict_mode(),
instr->hydrogen()->is_generator()); instr->hydrogen()->is_generator());
__ li(a2, Operand(instr->hydrogen()->shared_info())); __ li(a2, Operand(instr->hydrogen()->shared_info()));
CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr); CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr);
......
...@@ -163,9 +163,7 @@ class LCodeGen: public LCodeGenBase { ...@@ -163,9 +163,7 @@ class LCodeGen: public LCodeGenBase {
#undef DECLARE_DO #undef DECLARE_DO
private: private:
StrictMode strict_mode_flag() const { StrictMode strict_mode() const { return info()->strict_mode(); }
return info()->is_sloppy_mode() ? kSloppyMode : kStrictMode;
}
Scope* scope() const { return scope_; } Scope* scope() const { return scope_; }
......
...@@ -2141,7 +2141,7 @@ class LStoreNamedGeneric V8_FINAL : public LTemplateInstruction<0, 3, 0> { ...@@ -2141,7 +2141,7 @@ class LStoreNamedGeneric V8_FINAL : public LTemplateInstruction<0, 3, 0> {
virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
Handle<Object> name() const { return hydrogen()->name(); } Handle<Object> name() const { return hydrogen()->name(); }
StrictMode strict_mode_flag() { return hydrogen()->strict_mode_flag(); } StrictMode strict_mode() { return hydrogen()->strict_mode(); }
}; };
...@@ -2198,7 +2198,7 @@ class LStoreKeyedGeneric V8_FINAL : public LTemplateInstruction<0, 4, 0> { ...@@ -2198,7 +2198,7 @@ class LStoreKeyedGeneric V8_FINAL : public LTemplateInstruction<0, 4, 0> {
virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
StrictMode strict_mode_flag() { return hydrogen()->strict_mode_flag(); } StrictMode strict_mode() { return hydrogen()->strict_mode(); }
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment