From: mmaly@chromium.org Date: Fri, 11 Feb 2011 23:25:07 +0000 (+0000) Subject: Revert r6756. Check failed on V8 arm - debug - crankshaft. X-Git-Tag: upstream/4.7.83~20238 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3f4701df7f1fdafa5b62c66fabeecb62dd539cdf;p=platform%2Fupstream%2Fv8.git Revert r6756. Check failed on V8 arm - debug - crankshaft. Need to investigate. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6757 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/.gitignore b/.gitignore index 2eab942..c68dadb 100644 --- a/.gitignore +++ b/.gitignore @@ -20,7 +20,6 @@ d8_g shell shell_g /obj/ -/test/es5conform/data/ /test/sputnik/sputniktests/ /tools/oom_dump/oom_dump /tools/oom_dump/oom_dump.o diff --git a/src/arm/codegen-arm.cc b/src/arm/codegen-arm.cc index c827110..87c4968 100644 --- a/src/arm/codegen-arm.cc +++ b/src/arm/codegen-arm.cc @@ -6926,7 +6926,7 @@ void CodeGenerator::EmitNamedStore(Handle name, bool is_contextual) { Result result; if (is_contextual || scope()->is_global_scope() || loop_nesting() == 0) { - frame()->CallStoreIC(name, is_contextual, strict_mode_flag()); + frame()->CallStoreIC(name, is_contextual); } else { // Inline the in-object property case. JumpTarget slow, done; diff --git a/src/arm/full-codegen-arm.cc b/src/arm/full-codegen-arm.cc index 2685fcb..e357450 100644 --- a/src/arm/full-codegen-arm.cc +++ b/src/arm/full-codegen-arm.cc @@ -1685,10 +1685,8 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var, // r2, and the global object in r1. __ mov(r2, Operand(var->name())); __ ldr(r1, GlobalObjectOperand()); - Handle ic(Builtins::builtin(is_strict() - ? Builtins::StoreIC_Initialize_Strict - : Builtins::StoreIC_Initialize)); - EmitCallIC(ic, RelocInfo::CODE_TARGET_CONTEXT); + Handle ic(Builtins::builtin(Builtins::StoreIC_Initialize)); + EmitCallIC(ic, RelocInfo::CODE_TARGET); } else if (var->mode() != Variable::CONST || op == Token::INIT_CONST) { // Perform the assignment for non-const variables and for initialization diff --git a/src/arm/ic-arm.cc b/src/arm/ic-arm.cc index 8c76458..60c1067 100644 --- a/src/arm/ic-arm.cc +++ b/src/arm/ic-arm.cc @@ -1533,8 +1533,7 @@ void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm) { } -void StoreIC::GenerateMegamorphic(MacroAssembler* masm, - Code::ExtraICState extra_ic_state) { +void StoreIC::GenerateMegamorphic(MacroAssembler* masm) { // ----------- S t a t e ------------- // -- r0 : value // -- r1 : receiver @@ -1545,8 +1544,7 @@ void StoreIC::GenerateMegamorphic(MacroAssembler* masm, // Get the receiver from the stack and probe the stub cache. Code::Flags flags = Code::ComputeFlags(Code::STORE_IC, NOT_IN_LOOP, - MONOMORPHIC, - extra_ic_state); + MONOMORPHIC); StubCache::GenerateProbe(masm, flags, r1, r2, r3, r4, r5); // Cache miss: Jump to runtime. diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc index b8462dd..ca11d64 100644 --- a/src/arm/lithium-codegen-arm.cc +++ b/src/arm/lithium-codegen-arm.cc @@ -2944,9 +2944,7 @@ void LCodeGen::DoStoreNamedGeneric(LStoreNamedGeneric* instr) { // Name is always in r2. __ mov(r2, Operand(instr->name())); - Handle ic(Builtins::builtin(info_->is_strict() - ? Builtins::StoreIC_Initialize_Strict - : Builtins::StoreIC_Initialize)); + Handle ic(Builtins::builtin(Builtins::StoreIC_Initialize)); CallCode(ic, RelocInfo::CODE_TARGET, instr); } diff --git a/src/arm/virtual-frame-arm.cc b/src/arm/virtual-frame-arm.cc index b4b518c..3266a16 100644 --- a/src/arm/virtual-frame-arm.cc +++ b/src/arm/virtual-frame-arm.cc @@ -329,25 +329,18 @@ void VirtualFrame::CallLoadIC(Handle name, RelocInfo::Mode mode) { } -void VirtualFrame::CallStoreIC(Handle name, - bool is_contextual, - StrictModeFlag strict_mode) { - Handle ic(Builtins::builtin(strict_mode == kStrictMode - ? Builtins::StoreIC_Initialize_Strict - : Builtins::StoreIC_Initialize)); +void VirtualFrame::CallStoreIC(Handle name, bool is_contextual) { + Handle ic(Builtins::builtin(Builtins::StoreIC_Initialize)); PopToR0(); - RelocInfo::Mode mode; if (is_contextual) { SpillAll(); __ ldr(r1, MemOperand(cp, Context::SlotOffset(Context::GLOBAL_INDEX))); - mode = RelocInfo::CODE_TARGET_CONTEXT; } else { EmitPop(r1); SpillAll(); - mode = RelocInfo::CODE_TARGET; } __ mov(r2, Operand(name)); - CallCodeObject(ic, mode, 0); + CallCodeObject(ic, RelocInfo::CODE_TARGET, 0); } diff --git a/src/arm/virtual-frame-arm.h b/src/arm/virtual-frame-arm.h index b6e794a..82b4d08 100644 --- a/src/arm/virtual-frame-arm.h +++ b/src/arm/virtual-frame-arm.h @@ -294,8 +294,7 @@ class VirtualFrame : public ZoneObject { // Call store IC. If the load is contextual, value is found on top of the // frame. If not, value and receiver are on the frame. Both are consumed. // Result is returned in r0. - void CallStoreIC(Handle name, bool is_contextual, - StrictModeFlag strict_mode); + void CallStoreIC(Handle name, bool is_contextual); // Call keyed load IC. Key and receiver are on the stack. Both are consumed. // Result is returned in r0. diff --git a/src/assembler.h b/src/assembler.h index b089b09..e8bc5d6 100644 --- a/src/assembler.h +++ b/src/assembler.h @@ -181,7 +181,7 @@ class RelocInfo BASE_EMBEDDED { enum Mode { // Please note the order is important (see IsCodeTarget, IsGCRelocMode). CONSTRUCT_CALL, // code target that is a call to a JavaScript constructor. - CODE_TARGET_CONTEXT, // Code target used for contextual loads and stores. + CODE_TARGET_CONTEXT, // Code target used for contextual loads. DEBUG_BREAK, // Code target for the debugger statement. CODE_TARGET, // Code target which is not any of the above. EMBEDDED_OBJECT, diff --git a/src/builtins.cc b/src/builtins.cc index 8fdc1b1..0373cdc 100644 --- a/src/builtins.cc +++ b/src/builtins.cc @@ -1307,11 +1307,6 @@ static void Generate_StoreIC_Initialize(MacroAssembler* masm) { } -static void Generate_StoreIC_Initialize_Strict(MacroAssembler* masm) { - StoreIC::GenerateInitialize(masm); -} - - static void Generate_StoreIC_Miss(MacroAssembler* masm) { StoreIC::GenerateMiss(masm); } @@ -1322,18 +1317,8 @@ static void Generate_StoreIC_Normal(MacroAssembler* masm) { } -static void Generate_StoreIC_Normal_Strict(MacroAssembler* masm) { - StoreIC::GenerateNormal(masm); -} - - static void Generate_StoreIC_Megamorphic(MacroAssembler* masm) { - StoreIC::GenerateMegamorphic(masm, StoreIC::kStoreICNonStrict); -} - - -static void Generate_StoreIC_Megamorphic_Strict(MacroAssembler* masm) { - StoreIC::GenerateMegamorphic(masm, StoreIC::kStoreICStrict); + StoreIC::GenerateMegamorphic(masm); } @@ -1342,21 +1327,11 @@ static void Generate_StoreIC_ArrayLength(MacroAssembler* masm) { } -static void Generate_StoreIC_ArrayLength_Strict(MacroAssembler* masm) { - StoreIC::GenerateArrayLength(masm); -} - - static void Generate_StoreIC_GlobalProxy(MacroAssembler* masm) { StoreIC::GenerateGlobalProxy(masm); } -static void Generate_StoreIC_GlobalProxy_Strict(MacroAssembler* masm) { - StoreIC::GenerateGlobalProxy(masm); -} - - static void Generate_KeyedStoreIC_Generic(MacroAssembler* masm) { KeyedStoreIC::GenerateGeneric(masm); } @@ -1469,13 +1444,13 @@ void Builtins::Setup(bool create_heap_objects) { extra_args \ }, -#define DEF_FUNCTION_PTR_A(name, kind, state, extra) \ - { FUNCTION_ADDR(Generate_##name), \ - NULL, \ - #name, \ - name, \ - Code::ComputeFlags(Code::kind, NOT_IN_LOOP, state, extra), \ - NO_EXTRA_ARGUMENTS \ +#define DEF_FUNCTION_PTR_A(name, kind, state) \ + { FUNCTION_ADDR(Generate_##name), \ + NULL, \ + #name, \ + name, \ + Code::ComputeFlags(Code::kind, NOT_IN_LOOP, state), \ + NO_EXTRA_ARGUMENTS \ }, // Define array of pointers to generators and C builtin functions. diff --git a/src/builtins.h b/src/builtins.h index ada23a7..88d31c7 100644 --- a/src/builtins.h +++ b/src/builtins.h @@ -63,135 +63,73 @@ enum BuiltinExtraArguments { // Define list of builtins implemented in assembly. #define BUILTIN_LIST_A(V) \ - V(ArgumentsAdaptorTrampoline, BUILTIN, UNINITIALIZED, \ - Code::kNoExtraICState) \ - V(JSConstructCall, BUILTIN, UNINITIALIZED, \ - Code::kNoExtraICState) \ - V(JSConstructStubCountdown, BUILTIN, UNINITIALIZED, \ - Code::kNoExtraICState) \ - V(JSConstructStubGeneric, BUILTIN, UNINITIALIZED, \ - Code::kNoExtraICState) \ - V(JSConstructStubApi, BUILTIN, UNINITIALIZED, \ - Code::kNoExtraICState) \ - V(JSEntryTrampoline, BUILTIN, UNINITIALIZED, \ - Code::kNoExtraICState) \ - V(JSConstructEntryTrampoline, BUILTIN, UNINITIALIZED, \ - Code::kNoExtraICState) \ - V(LazyCompile, BUILTIN, UNINITIALIZED, \ - Code::kNoExtraICState) \ - V(LazyRecompile, BUILTIN, UNINITIALIZED, \ - Code::kNoExtraICState) \ - V(NotifyDeoptimized, BUILTIN, UNINITIALIZED, \ - Code::kNoExtraICState) \ - V(NotifyLazyDeoptimized, BUILTIN, UNINITIALIZED, \ - Code::kNoExtraICState) \ - V(NotifyOSR, BUILTIN, UNINITIALIZED, \ - Code::kNoExtraICState) \ + V(ArgumentsAdaptorTrampoline, BUILTIN, UNINITIALIZED) \ + V(JSConstructCall, BUILTIN, UNINITIALIZED) \ + V(JSConstructStubCountdown, BUILTIN, UNINITIALIZED) \ + V(JSConstructStubGeneric, BUILTIN, UNINITIALIZED) \ + V(JSConstructStubApi, BUILTIN, UNINITIALIZED) \ + V(JSEntryTrampoline, BUILTIN, UNINITIALIZED) \ + V(JSConstructEntryTrampoline, BUILTIN, UNINITIALIZED) \ + V(LazyCompile, BUILTIN, UNINITIALIZED) \ + V(LazyRecompile, BUILTIN, UNINITIALIZED) \ + V(NotifyDeoptimized, BUILTIN, UNINITIALIZED) \ + V(NotifyLazyDeoptimized, BUILTIN, UNINITIALIZED) \ + V(NotifyOSR, BUILTIN, UNINITIALIZED) \ \ - V(LoadIC_Miss, BUILTIN, UNINITIALIZED, \ - Code::kNoExtraICState) \ - V(KeyedLoadIC_Miss, BUILTIN, UNINITIALIZED, \ - Code::kNoExtraICState) \ - V(StoreIC_Miss, BUILTIN, UNINITIALIZED, \ - Code::kNoExtraICState) \ - V(KeyedStoreIC_Miss, BUILTIN, UNINITIALIZED, \ - Code::kNoExtraICState) \ + V(LoadIC_Miss, BUILTIN, UNINITIALIZED) \ + V(KeyedLoadIC_Miss, BUILTIN, UNINITIALIZED) \ + V(StoreIC_Miss, BUILTIN, UNINITIALIZED) \ + V(KeyedStoreIC_Miss, BUILTIN, UNINITIALIZED) \ \ - V(LoadIC_Initialize, LOAD_IC, UNINITIALIZED, \ - Code::kNoExtraICState) \ - V(LoadIC_PreMonomorphic, LOAD_IC, PREMONOMORPHIC, \ - Code::kNoExtraICState) \ - V(LoadIC_Normal, LOAD_IC, MONOMORPHIC, \ - Code::kNoExtraICState) \ - V(LoadIC_ArrayLength, LOAD_IC, MONOMORPHIC, \ - Code::kNoExtraICState) \ - V(LoadIC_StringLength, LOAD_IC, MONOMORPHIC, \ - Code::kNoExtraICState) \ - V(LoadIC_StringWrapperLength, LOAD_IC, MONOMORPHIC, \ - Code::kNoExtraICState) \ - V(LoadIC_FunctionPrototype, LOAD_IC, MONOMORPHIC, \ - Code::kNoExtraICState) \ - V(LoadIC_Megamorphic, LOAD_IC, MEGAMORPHIC, \ - Code::kNoExtraICState) \ + V(LoadIC_Initialize, LOAD_IC, UNINITIALIZED) \ + V(LoadIC_PreMonomorphic, LOAD_IC, PREMONOMORPHIC) \ + V(LoadIC_Normal, LOAD_IC, MONOMORPHIC) \ + V(LoadIC_ArrayLength, LOAD_IC, MONOMORPHIC) \ + V(LoadIC_StringLength, LOAD_IC, MONOMORPHIC) \ + V(LoadIC_StringWrapperLength, LOAD_IC, MONOMORPHIC) \ + V(LoadIC_FunctionPrototype, LOAD_IC, MONOMORPHIC) \ + V(LoadIC_Megamorphic, LOAD_IC, MEGAMORPHIC) \ \ - V(KeyedLoadIC_Initialize, KEYED_LOAD_IC, UNINITIALIZED, \ - Code::kNoExtraICState) \ - V(KeyedLoadIC_PreMonomorphic, KEYED_LOAD_IC, PREMONOMORPHIC, \ - Code::kNoExtraICState) \ - V(KeyedLoadIC_Generic, KEYED_LOAD_IC, MEGAMORPHIC, \ - Code::kNoExtraICState) \ - V(KeyedLoadIC_String, KEYED_LOAD_IC, MEGAMORPHIC, \ - Code::kNoExtraICState) \ - V(KeyedLoadIC_IndexedInterceptor, KEYED_LOAD_IC, MEGAMORPHIC, \ - Code::kNoExtraICState) \ + V(KeyedLoadIC_Initialize, KEYED_LOAD_IC, UNINITIALIZED) \ + V(KeyedLoadIC_PreMonomorphic, KEYED_LOAD_IC, PREMONOMORPHIC) \ + V(KeyedLoadIC_Generic, KEYED_LOAD_IC, MEGAMORPHIC) \ + V(KeyedLoadIC_String, KEYED_LOAD_IC, MEGAMORPHIC) \ + V(KeyedLoadIC_IndexedInterceptor, KEYED_LOAD_IC, MEGAMORPHIC) \ \ - V(StoreIC_Initialize, STORE_IC, UNINITIALIZED, \ - Code::kNoExtraICState) \ - V(StoreIC_ArrayLength, STORE_IC, MONOMORPHIC, \ - Code::kNoExtraICState) \ - V(StoreIC_Normal, STORE_IC, MONOMORPHIC, \ - Code::kNoExtraICState) \ - V(StoreIC_Megamorphic, STORE_IC, MEGAMORPHIC, \ - Code::kNoExtraICState) \ - V(StoreIC_GlobalProxy, STORE_IC, MEGAMORPHIC, \ - Code::kNoExtraICState) \ - V(StoreIC_Initialize_Strict, STORE_IC, UNINITIALIZED, \ - StoreIC::kStoreICStrict) \ - V(StoreIC_ArrayLength_Strict, STORE_IC, MONOMORPHIC, \ - StoreIC::kStoreICStrict) \ - V(StoreIC_Normal_Strict, STORE_IC, MONOMORPHIC, \ - StoreIC::kStoreICStrict) \ - V(StoreIC_Megamorphic_Strict, STORE_IC, MEGAMORPHIC, \ - StoreIC::kStoreICStrict) \ - V(StoreIC_GlobalProxy_Strict, STORE_IC, MEGAMORPHIC, \ - StoreIC::kStoreICStrict) \ + V(StoreIC_Initialize, STORE_IC, UNINITIALIZED) \ + V(StoreIC_ArrayLength, STORE_IC, MONOMORPHIC) \ + V(StoreIC_Normal, STORE_IC, MONOMORPHIC) \ + V(StoreIC_Megamorphic, STORE_IC, MEGAMORPHIC) \ + V(StoreIC_GlobalProxy, STORE_IC, MEGAMORPHIC) \ \ - V(KeyedStoreIC_Initialize, KEYED_STORE_IC, UNINITIALIZED, \ - Code::kNoExtraICState) \ - V(KeyedStoreIC_Generic, KEYED_STORE_IC, MEGAMORPHIC, \ - Code::kNoExtraICState) \ + V(KeyedStoreIC_Initialize, KEYED_STORE_IC, UNINITIALIZED) \ + V(KeyedStoreIC_Generic, KEYED_STORE_IC, MEGAMORPHIC) \ \ /* Uses KeyedLoadIC_Initialize; must be after in list. */ \ - V(FunctionCall, BUILTIN, UNINITIALIZED, \ - Code::kNoExtraICState) \ - V(FunctionApply, BUILTIN, UNINITIALIZED, \ - Code::kNoExtraICState) \ + V(FunctionCall, BUILTIN, UNINITIALIZED) \ + V(FunctionApply, BUILTIN, UNINITIALIZED) \ \ - V(ArrayCode, BUILTIN, UNINITIALIZED, \ - Code::kNoExtraICState) \ - V(ArrayConstructCode, BUILTIN, UNINITIALIZED, \ - Code::kNoExtraICState) \ + V(ArrayCode, BUILTIN, UNINITIALIZED) \ + V(ArrayConstructCode, BUILTIN, UNINITIALIZED) \ \ - V(StringConstructCode, BUILTIN, UNINITIALIZED, \ - Code::kNoExtraICState) \ + V(StringConstructCode, BUILTIN, UNINITIALIZED) \ \ - V(OnStackReplacement, BUILTIN, UNINITIALIZED, \ - Code::kNoExtraICState) + V(OnStackReplacement, BUILTIN, UNINITIALIZED) #ifdef ENABLE_DEBUGGER_SUPPORT // Define list of builtins used by the debugger implemented in assembly. #define BUILTIN_LIST_DEBUG_A(V) \ - V(Return_DebugBreak, BUILTIN, DEBUG_BREAK, \ - Code::kNoExtraICState) \ - V(ConstructCall_DebugBreak, BUILTIN, DEBUG_BREAK, \ - Code::kNoExtraICState) \ - V(StubNoRegisters_DebugBreak, BUILTIN, DEBUG_BREAK, \ - Code::kNoExtraICState) \ - V(LoadIC_DebugBreak, LOAD_IC, DEBUG_BREAK, \ - Code::kNoExtraICState) \ - V(KeyedLoadIC_DebugBreak, KEYED_LOAD_IC, DEBUG_BREAK, \ - Code::kNoExtraICState) \ - V(StoreIC_DebugBreak, STORE_IC, DEBUG_BREAK, \ - Code::kNoExtraICState) \ - V(KeyedStoreIC_DebugBreak, KEYED_STORE_IC, DEBUG_BREAK, \ - Code::kNoExtraICState) \ - V(Slot_DebugBreak, BUILTIN, DEBUG_BREAK, \ - Code::kNoExtraICState) \ - V(PlainReturn_LiveEdit, BUILTIN, DEBUG_BREAK, \ - Code::kNoExtraICState) \ - V(FrameDropper_LiveEdit, BUILTIN, DEBUG_BREAK, \ - Code::kNoExtraICState) + V(Return_DebugBreak, BUILTIN, DEBUG_BREAK) \ + V(ConstructCall_DebugBreak, BUILTIN, DEBUG_BREAK) \ + V(StubNoRegisters_DebugBreak, BUILTIN, DEBUG_BREAK) \ + V(LoadIC_DebugBreak, LOAD_IC, DEBUG_BREAK) \ + V(KeyedLoadIC_DebugBreak, KEYED_LOAD_IC, DEBUG_BREAK) \ + V(StoreIC_DebugBreak, STORE_IC, DEBUG_BREAK) \ + V(KeyedStoreIC_DebugBreak, KEYED_STORE_IC, DEBUG_BREAK) \ + V(Slot_DebugBreak, BUILTIN, DEBUG_BREAK) \ + V(PlainReturn_LiveEdit, BUILTIN, DEBUG_BREAK) \ + V(FrameDropper_LiveEdit, BUILTIN, DEBUG_BREAK) #else #define BUILTIN_LIST_DEBUG_A(V) #endif @@ -248,7 +186,7 @@ class Builtins : public AllStatic { enum Name { #define DEF_ENUM_C(name, ignore) name, -#define DEF_ENUM_A(name, kind, state, extra) name, +#define DEF_ENUM_A(name, kind, state) name, BUILTIN_LIST_C(DEF_ENUM_C) BUILTIN_LIST_A(DEF_ENUM_A) BUILTIN_LIST_DEBUG_A(DEF_ENUM_A) diff --git a/src/compiler.h b/src/compiler.h index 239bea3..9843dd6 100644 --- a/src/compiler.h +++ b/src/compiler.h @@ -71,6 +71,7 @@ class CompilationInfo BASE_EMBEDDED { flags_ |= IsGlobal::encode(true); } void MarkAsStrict() { + ASSERT(!is_lazy()); flags_ |= IsStrict::encode(true); } StrictModeFlag StrictMode() { @@ -152,9 +153,6 @@ class CompilationInfo BASE_EMBEDDED { void Initialize(Mode mode) { mode_ = V8::UseCrankshaft() ? mode : NONOPT; - if (!shared_info_.is_null() && shared_info_->strict_mode()) { - MarkAsStrict(); - } } void SetMode(Mode mode) { diff --git a/src/full-codegen.h b/src/full-codegen.h index 655e560..b85c8c6 100644 --- a/src/full-codegen.h +++ b/src/full-codegen.h @@ -531,9 +531,8 @@ class FullCodeGenerator: public AstVisitor { Handle