diff options
author | weiliang.lin@intel.com <weiliang.lin@intel.com> | 2014-11-04 08:22:40 +0000 |
---|---|---|
committer | weiliang.lin@intel.com <weiliang.lin@intel.com> | 2014-11-04 08:23:19 +0000 |
commit | b1d9f4b46c9d3041103c0d47fada41ea1ee9c839 (patch) | |
tree | e8531b19dd0823b09c22ee3928001ab2f229612b | |
parent | 040b51669fc15f81ef4aab890e004c957a896560 (diff) | |
download | v8-b1d9f4b46c9d3041103c0d47fada41ea1ee9c839.tar.gz |
Version 3.29.88.13 (merged r24961, r25000)
X87: Use shared function info for eval cache key.
X87: EmitCreateIteratorResult loads map from function's context
R=yangguo@chromium.org, jkummerow@chromium.org
BUG=
Review URL: https://codereview.chromium.org/699833003
Cr-Commit-Position: refs/branch-heads/3.29@{#25093}
git-svn-id: https://v8.googlecode.com/svn/branches/3.29@25093 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-rw-r--r-- | src/version.cc | 2 | ||||
-rw-r--r-- | src/x87/full-codegen-x87.cc | 17 |
2 files changed, 12 insertions, 7 deletions
diff --git a/src/version.cc b/src/version.cc index bfa0b9165..857531708 100644 --- a/src/version.cc +++ b/src/version.cc @@ -35,7 +35,7 @@ #define MAJOR_VERSION 3 #define MINOR_VERSION 29 #define BUILD_NUMBER 88 -#define PATCH_LEVEL 12 +#define PATCH_LEVEL 13 // Use 1 for candidates and 0 otherwise. // (Boolean macro values are not supported by all preprocessors.) #define IS_CANDIDATE_VERSION 0 diff --git a/src/x87/full-codegen-x87.cc b/src/x87/full-codegen-x87.cc index 58328e06f..c159edded 100644 --- a/src/x87/full-codegen-x87.cc +++ b/src/x87/full-codegen-x87.cc @@ -2191,22 +2191,25 @@ void FullCodeGenerator::EmitCreateIteratorResult(bool done) { Label gc_required; Label allocated; - Handle<Map> map(isolate()->native_context()->iterator_result_map()); + const int instance_size = 5 * kPointerSize; + DCHECK_EQ(isolate()->native_context()->iterator_result_map()->instance_size(), + instance_size); - __ Allocate(map->instance_size(), eax, ecx, edx, &gc_required, TAG_OBJECT); + __ Allocate(instance_size, eax, ecx, edx, &gc_required, TAG_OBJECT); __ jmp(&allocated); __ bind(&gc_required); - __ Push(Smi::FromInt(map->instance_size())); + __ Push(Smi::FromInt(instance_size)); __ CallRuntime(Runtime::kAllocateInNewSpace, 1); __ mov(context_register(), Operand(ebp, StandardFrameConstants::kContextOffset)); __ bind(&allocated); - __ mov(ebx, map); + __ mov(ebx, Operand(esi, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX))); + __ mov(ebx, FieldOperand(ebx, GlobalObject::kNativeContextOffset)); + __ mov(ebx, ContextOperand(ebx, Context::ITERATOR_RESULT_MAP_INDEX)); __ pop(ecx); __ mov(edx, isolate()->factory()->ToBoolean(done)); - DCHECK_EQ(map->instance_size(), 5 * kPointerSize); __ mov(FieldOperand(eax, HeapObject::kMapOffset), ebx); __ mov(FieldOperand(eax, JSObject::kPropertiesOffset), isolate()->factory()->empty_fixed_array()); @@ -2695,6 +2698,8 @@ void FullCodeGenerator::EmitResolvePossiblyDirectEval(int arg_count) { __ push(Immediate(isolate()->factory()->undefined_value())); } + // Push the enclosing function. + __ push(Operand(ebp, JavaScriptFrameConstants::kFunctionOffset)); // Push the receiver of the enclosing function. __ push(Operand(ebp, (2 + info_->scope()->num_parameters()) * kPointerSize)); // Push the language mode. @@ -2704,7 +2709,7 @@ void FullCodeGenerator::EmitResolvePossiblyDirectEval(int arg_count) { __ push(Immediate(Smi::FromInt(scope()->start_position()))); // Do the runtime call. - __ CallRuntime(Runtime::kResolvePossiblyDirectEval, 5); + __ CallRuntime(Runtime::kResolvePossiblyDirectEval, 6); } |