Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(300)

Side by Side Diff: src/code-stubs.h

Issue 428183003: Fix issue with storing 31-bit bitfield as Smi. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: reverted v8.h Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | src/objects.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_CODE_STUBS_H_ 5 #ifndef V8_CODE_STUBS_H_
6 #define V8_CODE_STUBS_H_ 6 #define V8_CODE_STUBS_H_
7 7
8 #include "src/allocation.h" 8 #include "src/allocation.h"
9 #include "src/assembler.h" 9 #include "src/assembler.h"
10 #include "src/codegen.h" 10 #include "src/codegen.h"
(...skipping 1592 matching lines...) Expand 10 before | Expand all | Expand 10 after
1603 static const int kInput = 2; 1603 static const int kInput = 2;
1604 1604
1605 private: 1605 private:
1606 DISALLOW_COPY_AND_ASSIGN(RegExpConstructResultStub); 1606 DISALLOW_COPY_AND_ASSIGN(RegExpConstructResultStub);
1607 }; 1607 };
1608 1608
1609 1609
1610 class CallFunctionStub: public PlatformCodeStub { 1610 class CallFunctionStub: public PlatformCodeStub {
1611 public: 1611 public:
1612 CallFunctionStub(Isolate* isolate, int argc, CallFunctionFlags flags) 1612 CallFunctionStub(Isolate* isolate, int argc, CallFunctionFlags flags)
1613 : PlatformCodeStub(isolate), argc_(argc), flags_(flags) { } 1613 : PlatformCodeStub(isolate), argc_(argc), flags_(flags) {
1614 ASSERT(argc <= Code::kMaxArguments);
1615 }
1614 1616
1615 void Generate(MacroAssembler* masm); 1617 void Generate(MacroAssembler* masm);
1616 1618
1617 static int ExtractArgcFromMinorKey(int minor_key) { 1619 static int ExtractArgcFromMinorKey(int minor_key) {
1618 return ArgcBits::decode(minor_key); 1620 return ArgcBits::decode(minor_key);
1619 } 1621 }
1620 1622
1621 private: 1623 private:
1622 int argc_; 1624 int argc_;
1623 CallFunctionFlags flags_; 1625 CallFunctionFlags flags_;
1624 1626
1625 virtual void PrintName(OStream& os) const V8_OVERRIDE; // NOLINT 1627 virtual void PrintName(OStream& os) const V8_OVERRIDE; // NOLINT
1626 1628
1627 // Minor key encoding in 32 bits with Bitfield <Type, shift, size>. 1629 // Minor key encoding in 32 bits with Bitfield <Type, shift, size>.
1628 class FlagBits: public BitField<CallFunctionFlags, 0, 2> {}; 1630 class FlagBits: public BitField<CallFunctionFlags, 0, 2> {};
1629 class ArgcBits: public BitField<unsigned, 2, 32 - 2> {}; 1631 class ArgcBits : public BitField<unsigned, 2, Code::kArgumentsBits> {};
1632
1633 STATIC_ASSERT(Code::kArgumentsBits + 2 <= kStubMinorKeyBits);
1630 1634
1631 Major MajorKey() const { return CallFunction; } 1635 Major MajorKey() const { return CallFunction; }
1632 int MinorKey() const { 1636 int MinorKey() const {
1633 // Encode the parameters in a unique 32 bit value. 1637 // Encode the parameters in a unique 32 bit value.
1634 return FlagBits::encode(flags_) | ArgcBits::encode(argc_); 1638 return FlagBits::encode(flags_) | ArgcBits::encode(argc_);
1635 } 1639 }
1636 1640
1637 bool CallAsMethod() { 1641 bool CallAsMethod() {
1638 return flags_ == CALL_AS_METHOD || flags_ == WRAP_AND_CALL; 1642 return flags_ == CALL_AS_METHOD || flags_ == WRAP_AND_CALL;
1639 } 1643 }
(...skipping 883 matching lines...) Expand 10 before | Expand all | Expand 10 after
2523 2527
2524 2528
2525 class CallDescriptors { 2529 class CallDescriptors {
2526 public: 2530 public:
2527 static void InitializeForIsolate(Isolate* isolate); 2531 static void InitializeForIsolate(Isolate* isolate);
2528 }; 2532 };
2529 2533
2530 } } // namespace v8::internal 2534 } } // namespace v8::internal
2531 2535
2532 #endif // V8_CODE_STUBS_H_ 2536 #endif // V8_CODE_STUBS_H_
OLDNEW
« no previous file with comments | « no previous file | src/objects.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698