Commit 2517b0ef authored by erik.corry@gmail.com's avatar erik.corry@gmail.com

Fix some asserts in stub generation and file some bugs where

we appear to have valid asserts triggering.
Review URL: http://codereview.chromium.org/7908005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9305 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 6a5e0448
...@@ -592,6 +592,8 @@ static MaybeObject* GenerateFastApiDirectCall( ...@@ -592,6 +592,8 @@ static MaybeObject* GenerateFastApiDirectCall(
ApiFunction fun(api_function_address); ApiFunction fun(api_function_address);
const int kApiStackSpace = 4; const int kApiStackSpace = 4;
FrameScope frame_scope(masm, StackFrame::MANUAL);
__ EnterExitFrame(false, kApiStackSpace); __ EnterExitFrame(false, kApiStackSpace);
// r0 = v8::Arguments& // r0 = v8::Arguments&
...@@ -1233,7 +1235,10 @@ MaybeObject* StubCompiler::GenerateLoadCallback(JSObject* object, ...@@ -1233,7 +1235,10 @@ MaybeObject* StubCompiler::GenerateLoadCallback(JSObject* object,
ApiFunction fun(getter_address); ApiFunction fun(getter_address);
const int kApiStackSpace = 1; const int kApiStackSpace = 1;
FrameScope frame_scope(masm(), StackFrame::MANUAL);
__ EnterExitFrame(false, kApiStackSpace); __ EnterExitFrame(false, kApiStackSpace);
// Create AccessorInfo instance on the stack above the exit frame with // Create AccessorInfo instance on the stack above the exit frame with
// scratch2 (internal::Object **args_) as the data. // scratch2 (internal::Object **args_) as the data.
__ str(scratch2, MemOperand(sp, 1 * kPointerSize)); __ str(scratch2, MemOperand(sp, 1 * kPointerSize));
......
// Copyright 2006-2008 the V8 project authors. All rights reserved. // Copyright 2011 the V8 project authors. All rights reserved.
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
// met: // met:
...@@ -96,8 +96,7 @@ namespace internal { ...@@ -96,8 +96,7 @@ namespace internal {
class FrameScope { class FrameScope {
public: public:
explicit FrameScope(MacroAssembler* masm, StackFrame::Type type) explicit FrameScope(MacroAssembler* masm, StackFrame::Type type)
: masm_(masm), type_(type) { : masm_(masm), type_(type), old_has_frame_(masm->has_frame()) {
ASSERT(!masm->has_frame());
masm->set_has_frame(true); masm->set_has_frame(true);
if (type != StackFrame::MANUAL && type_ != StackFrame::NONE) { if (type != StackFrame::MANUAL && type_ != StackFrame::NONE) {
masm->EnterFrame(type); masm->EnterFrame(type);
...@@ -108,7 +107,7 @@ class FrameScope { ...@@ -108,7 +107,7 @@ class FrameScope {
if (type_ != StackFrame::MANUAL && type_ != StackFrame::NONE) { if (type_ != StackFrame::MANUAL && type_ != StackFrame::NONE) {
masm_->LeaveFrame(type_); masm_->LeaveFrame(type_);
} }
masm_->set_has_frame(false); masm_->set_has_frame(old_has_frame_);
} }
// Normally we generate the leave-frame code when this object goes // Normally we generate the leave-frame code when this object goes
...@@ -123,6 +122,7 @@ class FrameScope { ...@@ -123,6 +122,7 @@ class FrameScope {
private: private:
MacroAssembler* masm_; MacroAssembler* masm_;
StackFrame::Type type_; StackFrame::Type type_;
bool old_has_frame_;
}; };
......
...@@ -596,6 +596,7 @@ static MaybeObject* GenerateFastApiDirectCall( ...@@ -596,6 +596,7 @@ static MaybeObject* GenerateFastApiDirectCall(
const int kApiStackSpace = 4; const int kApiStackSpace = 4;
FrameScope frame_scope(masm, StackFrame::MANUAL);
__ EnterExitFrame(false, kApiStackSpace); __ EnterExitFrame(false, kApiStackSpace);
// NOTE: the O32 abi requires a0 to hold a special pointer when returning a // NOTE: the O32 abi requires a0 to hold a special pointer when returning a
...@@ -1260,7 +1261,9 @@ MaybeObject* StubCompiler::GenerateLoadCallback(JSObject* object, ...@@ -1260,7 +1261,9 @@ MaybeObject* StubCompiler::GenerateLoadCallback(JSObject* object,
const int kApiStackSpace = 1; const int kApiStackSpace = 1;
FrameScope frame_scope(masm(), StackFrame::MANUAL);
__ EnterExitFrame(false, kApiStackSpace); __ EnterExitFrame(false, kApiStackSpace);
// Create AccessorInfo instance on the stack above the exit frame with // Create AccessorInfo instance on the stack above the exit frame with
// scratch2 (internal::Object **args_) as the data. // scratch2 (internal::Object **args_) as the data.
__ sw(a2, MemOperand(sp, kPointerSize)); __ sw(a2, MemOperand(sp, kPointerSize));
......
# Copyright 2009 the V8 project authors. All rights reserved. # Copyright 2011 the V8 project authors. All rights reserved.
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are # modification, are permitted provided that the following conditions are
# met: # met:
...@@ -69,6 +69,8 @@ js1_5/Array/regress-465980-02: SKIP ...@@ -69,6 +69,8 @@ js1_5/Array/regress-465980-02: SKIP
ecma_3/Date/15.9.3.2-1: SKIP ecma_3/Date/15.9.3.2-1: SKIP
js1_2/function/Number: SKIP js1_2/function/Number: SKIP
# Causes assert to be triggered: http://code.google.com/p/v8/issues/detail?id=1689
js1_5/GC/regress-311497: SKIP
##################### SLOW TESTS ##################### ##################### SLOW TESTS #####################
......
...@@ -37,6 +37,9 @@ S15.3.4.5_A2: FAIL ...@@ -37,6 +37,9 @@ S15.3.4.5_A2: FAIL
# '__proto__' should be treated as a normal property in JSON. # '__proto__' should be treated as a normal property in JSON.
S15.12.2_A1: FAIL S15.12.2_A1: FAIL
# Assert is triggered by this test: http://code.google.com/p/v8/issues/detail?id=1689
S13_A18: SKIP
##################### DELIBERATE INCOMPATIBILITIES ##################### ##################### DELIBERATE INCOMPATIBILITIES #####################
# This tests precision of trignometric functions. We're slightly off # This tests precision of trignometric functions. We're slightly off
......
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