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

Side by Side Diff: runtime/vm/object.h

Issue 1201383002: Port irregexp bytecode compiler and interpreter from V8 r24065. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 5 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
« no previous file with comments | « runtime/vm/intrinsifier_x64.cc ('k') | runtime/vm/object.cc » ('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 (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #ifndef VM_OBJECT_H_ 5 #ifndef VM_OBJECT_H_
6 #define VM_OBJECT_H_ 6 #define VM_OBJECT_H_
7 7
8 #include "include/dart_api.h" 8 #include "include/dart_api.h"
9 #include "platform/assert.h" 9 #include "platform/assert.h"
10 #include "platform/utils.h" 10 #include "platform/utils.h"
(...skipping 7652 matching lines...) Expand 10 before | Expand all | Expand 10 after
7663 class FlagsBits : public BitField<intptr_t, kFlagsPos, kFlagsSize> {}; 7663 class FlagsBits : public BitField<intptr_t, kFlagsPos, kFlagsSize> {};
7664 7664
7665 bool is_initialized() const { return (type() != kUnitialized); } 7665 bool is_initialized() const { return (type() != kUnitialized); }
7666 bool is_simple() const { return (type() == kSimple); } 7666 bool is_simple() const { return (type() == kSimple); }
7667 bool is_complex() const { return (type() == kComplex); } 7667 bool is_complex() const { return (type() == kComplex); }
7668 7668
7669 bool is_global() const { return (flags() & kGlobal); } 7669 bool is_global() const { return (flags() & kGlobal); }
7670 bool is_ignore_case() const { return (flags() & kIgnoreCase); } 7670 bool is_ignore_case() const { return (flags() & kIgnoreCase); }
7671 bool is_multi_line() const { return (flags() & kMultiLine); } 7671 bool is_multi_line() const { return (flags() & kMultiLine); }
7672 7672
7673 intptr_t num_registers() const { return raw_ptr()->num_registers_; }
7674
7673 RawString* pattern() const { return raw_ptr()->pattern_; } 7675 RawString* pattern() const { return raw_ptr()->pattern_; }
7674 RawSmi* num_bracket_expressions() const { 7676 RawSmi* num_bracket_expressions() const {
7675 return raw_ptr()->num_bracket_expressions_; 7677 return raw_ptr()->num_bracket_expressions_;
7676 } 7678 }
7677 7679
7680 RawTypedData* bytecode(bool is_one_byte) const {
7681 return is_one_byte ? raw_ptr()->one_byte_bytecode_
7682 : raw_ptr()->two_byte_bytecode_;
7683 }
7684
7678 static intptr_t function_offset(intptr_t cid) { 7685 static intptr_t function_offset(intptr_t cid) {
7679 switch (cid) { 7686 switch (cid) {
7680 case kOneByteStringCid: 7687 case kOneByteStringCid:
7681 return OFFSET_OF(RawJSRegExp, one_byte_function_); 7688 return OFFSET_OF(RawJSRegExp, one_byte_function_);
7682 case kTwoByteStringCid: 7689 case kTwoByteStringCid:
7683 return OFFSET_OF(RawJSRegExp, two_byte_function_); 7690 return OFFSET_OF(RawJSRegExp, two_byte_function_);
7684 case kExternalOneByteStringCid: 7691 case kExternalOneByteStringCid:
7685 return OFFSET_OF(RawJSRegExp, external_one_byte_function_); 7692 return OFFSET_OF(RawJSRegExp, external_one_byte_function_);
7686 case kExternalTwoByteStringCid: 7693 case kExternalTwoByteStringCid:
7687 return OFFSET_OF(RawJSRegExp, external_two_byte_function_); 7694 return OFFSET_OF(RawJSRegExp, external_two_byte_function_);
7688 } 7695 }
7689 7696
7690 UNREACHABLE(); 7697 UNREACHABLE();
7691 return -1; 7698 return -1;
7692 } 7699 }
7693 7700
7694 RawFunction** FunctionAddr(intptr_t cid) const { 7701 RawFunction** FunctionAddr(intptr_t cid) const {
7695 return reinterpret_cast<RawFunction**>( 7702 return reinterpret_cast<RawFunction**>(
7696 FieldAddrAtOffset(function_offset(cid))); 7703 FieldAddrAtOffset(function_offset(cid)));
7697 } 7704 }
7698 7705
7699 RawFunction* function(intptr_t cid) const { 7706 RawFunction* function(intptr_t cid) const {
7700 return *FunctionAddr(cid); 7707 return *FunctionAddr(cid);
7701 } 7708 }
7702 7709
7703 void set_pattern(const String& pattern) const; 7710 void set_pattern(const String& pattern) const;
7704 void set_function(intptr_t cid, const Function& value) const; 7711 void set_function(intptr_t cid, const Function& value) const;
7712 void set_bytecode(bool is_one_byte, const TypedData& bytecode) const;
7705 7713
7706 void set_num_bracket_expressions(intptr_t value) const; 7714 void set_num_bracket_expressions(intptr_t value) const;
7707 void set_is_global() const { set_flags(flags() | kGlobal); } 7715 void set_is_global() const { set_flags(flags() | kGlobal); }
7708 void set_is_ignore_case() const { set_flags(flags() | kIgnoreCase); } 7716 void set_is_ignore_case() const { set_flags(flags() | kIgnoreCase); }
7709 void set_is_multi_line() const { set_flags(flags() | kMultiLine); } 7717 void set_is_multi_line() const { set_flags(flags() | kMultiLine); }
7710 void set_is_simple() const { set_type(kSimple); } 7718 void set_is_simple() const { set_type(kSimple); }
7711 void set_is_complex() const { set_type(kComplex); } 7719 void set_is_complex() const { set_type(kComplex); }
7720 void set_num_registers(intptr_t value) const {
7721 StoreNonPointer(&raw_ptr()->num_registers_, value);
7722 }
7712 7723
7713 void* GetDataStartAddress() const; 7724 void* GetDataStartAddress() const;
7714 static RawJSRegExp* FromDataStartAddress(void* data); 7725 static RawJSRegExp* FromDataStartAddress(void* data);
7715 const char* Flags() const; 7726 const char* Flags() const;
7716 7727
7717 virtual bool CanonicalizeEquals(const Instance& other) const; 7728 virtual bool CanonicalizeEquals(const Instance& other) const;
7718 7729
7719 static intptr_t InstanceSize() { 7730 static intptr_t InstanceSize() {
7720 return RoundedAllocationSize(sizeof(RawJSRegExp)); 7731 return RoundedAllocationSize(sizeof(RawJSRegExp));
7721 } 7732 }
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
7995 8006
7996 8007
7997 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, 8008 RawObject* MegamorphicCache::GetTargetFunction(const Array& array,
7998 intptr_t index) { 8009 intptr_t index) {
7999 return array.At((index * kEntryLength) + kTargetFunctionIndex); 8010 return array.At((index * kEntryLength) + kTargetFunctionIndex);
8000 } 8011 }
8001 8012
8002 } // namespace dart 8013 } // namespace dart
8003 8014
8004 #endif // VM_OBJECT_H_ 8015 #endif // VM_OBJECT_H_
OLDNEW
« no previous file with comments | « runtime/vm/intrinsifier_x64.cc ('k') | runtime/vm/object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698