Index: src/lithium.cc |
diff --git a/src/lithium.cc b/src/lithium.cc |
index 790a2182b176ac5d86e701e01395297d90c6e5ca..5b3a30332c6d88d609206e0ba3c78927399964c4 100644 |
--- a/src/lithium.cc |
+++ b/src/lithium.cc |
@@ -450,13 +450,23 @@ Handle<Code> LChunk::Codegen() { |
LOG_CODE_EVENT(info()->isolate(), |
CodeStartLinePosInfoRecordEvent( |
assembler.positions_recorder())); |
+ |
+ Code::Flags flags = info()->flags(); |
+ Code::Kind kind = Code::ExtractKindFromFlags(flags); |
+ |
+ if (FLAG_enable_thumb2_crankshaft && kind == Code::OPTIMIZED_FUNCTION) { |
+ assembler.set_thumb_mode(); |
+ } |
LCodeGen generator(this, &assembler, info()); |
MarkEmptyBlocks(); |
if (generator.GenerateCode()) { |
CodeGenerator::MakeCodePrologue(info(), "optimized"); |
- Code::Flags flags = info()->flags(); |
+ if (FLAG_enable_thumb2_crankshaft && kind == Code::OPTIMIZED_FUNCTION) { |
+ flags = Code::ComputeFlags(kind, UNINITIALIZED, Code::kNoExtraICState, |
+ Code::NORMAL, -1, OWN_MAP, true); |
+ } |
Handle<Code> code = |
CodeGenerator::MakeCodeEpilogue(&assembler, flags, info()); |
generator.FinishCode(code); |