aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorweiliang.lin@intel.com <weiliang.lin@intel.com>2014-11-04 08:22:40 +0000
committerweiliang.lin@intel.com <weiliang.lin@intel.com>2014-11-04 08:23:19 +0000
commitb1d9f4b46c9d3041103c0d47fada41ea1ee9c839 (patch)
treee8531b19dd0823b09c22ee3928001ab2f229612b
parent040b51669fc15f81ef4aab890e004c957a896560 (diff)
downloadv8-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.cc2
-rw-r--r--src/x87/full-codegen-x87.cc17
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);
}