Page MenuHomePhabricator

bulbazord (Alex Langford)
:3

Projects

User does not belong to any projects.

User Details

User Since
Dec 1 2020, 2:41 PM (83 w, 15 h)

Recent Activity

Mon, Jun 27

bulbazord committed rGef5510d81b64: [NFC][lldb] Correct Module::FindFunctions documentation (authored by bulbazord).
[NFC][lldb] Correct Module::FindFunctions documentation
Mon, Jun 27, 12:34 PM · Restricted Project

Fri, Jun 24

bulbazord added a comment to D128366: [lldb] Make Module::LookupInfo::Prune language-agnostic.

Could we move this pruning elsewhere? These values come from the symbol file plugins anyway, and they can do a better job at determining which language does a particular name belong to.
(OK, they can an also come from the symtab, but there I guess we could infer something from the mangling scheme).

We're specifically pruning the results from a name lookup, so I'm not sure where would be a better place to move it.

Well. I guess ideally I would pass whatever information is needed into the lookup functions themselves, so that there is no need for the additional filtering. I don't know why it's done this way but this setup seems inefficient, as we have to generate all these SymbolContext only for them to be (potentially) thrown away...

Fri, Jun 24, 10:54 AM · Restricted Project, Restricted Project

Thu, Jun 23

bulbazord added a comment to D128366: [lldb] Make Module::LookupInfo::Prune language-agnostic.

How hot is this code? Parsing a demangled name isn't entirely cheap, and the fact that the objc++ class calls back into the c++ version means that the c++ name will be parsed twice.

Thu, Jun 23, 9:15 AM · Restricted Project, Restricted Project

Wed, Jun 22

bulbazord requested review of D128366: [lldb] Make Module::LookupInfo::Prune language-agnostic.
Wed, Jun 22, 11:28 AM · Restricted Project, Restricted Project

Apr 19 2022

bulbazord closed D122691: [clang][Sema] Add flag to LookupName to force C/ObjC codepath.

Gah, forgot to add the phabricator link to the commit message. I added the commit object to this diff, hopefully people can track it down the review if needed.

Apr 19 2022, 1:17 PM · Restricted Project, Restricted Project
bulbazord committed rGc57f03415f96: [clang][Sema] Add flag to LookupName to force C/ObjC codepath (authored by bulbazord).
[clang][Sema] Add flag to LookupName to force C/ObjC codepath
Apr 19 2022, 1:14 PM · Restricted Project, Restricted Project

Apr 18 2022

bulbazord updated the diff for D122691: [clang][Sema] Add flag to LookupName to force C/ObjC codepath.

Added a test

Apr 18 2022, 11:44 AM · Restricted Project, Restricted Project

Mar 29 2022

bulbazord requested review of D122691: [clang][Sema] Add flag to LookupName to force C/ObjC codepath.
Mar 29 2022, 3:53 PM · Restricted Project, Restricted Project

Mar 24 2022

bulbazord abandoned D121748: [clang][Sema] Better support for ObjC++ in Sema::LookupName.
Mar 24 2022, 11:39 AM · Restricted Project, Restricted Project

Mar 21 2022

bulbazord added a comment to D121748: [clang][Sema] Better support for ObjC++ in Sema::LookupName.

I don't think this patch is sound. I found this problem with this change when the following file is compiled in Objective-C++ mode:

template <class T, bool umax = true>
T umax(T a, T b) {
  return a;
}

produces this error:

test.mm:3:3: error: declaration of 'umax' shadows template parameter
T umax(T a, T b) {
  ^
test.mm:2:25: note: template parameter is declared here
template <class T, bool umax = true>
                        ^

which is unexpected and isn't produced in C++ mode.

Mar 21 2022, 2:30 PM · Restricted Project, Restricted Project

Mar 16 2022

bulbazord added a comment to D121748: [clang][Sema] Better support for ObjC++ in Sema::LookupName.

Is there a Swift-based test case you have that demonstrates the original problem from Swift's clang importer side? I'm curious to see where it manifests in Swift.

Mar 16 2022, 10:12 AM · Restricted Project, Restricted Project

Mar 15 2022

bulbazord added a comment to D121748: [clang][Sema] Better support for ObjC++ in Sema::LookupName.

I'm not quite sure the best way to test this. Looks like Sema::LookupName isn't currently directly tested. I've run the test suite and did not find any new failing tests.

Mar 15 2022, 3:41 PM · Restricted Project, Restricted Project
bulbazord requested review of D121748: [clang][Sema] Better support for ObjC++ in Sema::LookupName.
Mar 15 2022, 3:40 PM · Restricted Project, Restricted Project

Nov 29 2021

bulbazord added a comment to D114668: [lldb][NFC] Move generic DWARFASTParser code out of Clang-specific code.

I think breaking it out of the Clang-specific class makes sense if we want LLDB to be more language-agnostic. Do you have an idea of what bits of DWARFASTParserClang can be moved out other than ParseChildArrayInfo and GetAccessTypeFromDWARF (from the patch on top of this)? What is your end-goal with this decoupling? I assume you want to work towards supporting languages non-clang-based languages but I'm curious about the motivation.

Nov 29 2021, 2:51 PM · Restricted Project, Restricted Project
bulbazord accepted D114719: [lldb][NFC] Move non-clang specific method to the generic DWARF Parser.

This makes sense to me. Out of curiosity, do you have plans to use this for non-clang-based languages?

Nov 29 2021, 2:44 PM · Restricted Project, Restricted Project

Nov 12 2021

bulbazord added a comment to D113789: Add the ability to cache information for a module between debugger instances..

This patch effectively introduces a file format to cache lldb internal state. While the tests and the code do give some information for what it looks like, some documentation about this format would be nice.

Nov 12 2021, 1:56 PM · Restricted Project

Nov 11 2021

bulbazord committed rGac33e65d2169: [lldb][NFC] Delete commented out code in AddressRange (authored by bulbazord).
[lldb][NFC] Delete commented out code in AddressRange
Nov 11 2021, 3:43 PM

Oct 18 2021

bulbazord accepted D111931: [lldb] Filter duplicates in Target::GetScratchTypeSystems.

Makes sense to me!

Oct 18 2021, 11:06 AM · Restricted Project

Sep 29 2021

bulbazord closed D110115: [lldb] Remove Expression's dependency on CPlusPlusLanguagePlugin.

385b2189cc44

Sep 29 2021, 1:19 PM · Restricted Project
bulbazord committed rG385b2189cc44: [lldb] Remove Expression's dependency on CPlusPlusLanguagePlugin (authored by bulbazord).
[lldb] Remove Expression's dependency on CPlusPlusLanguagePlugin
Sep 29 2021, 11:41 AM

Sep 27 2021

bulbazord removed a reviewer for D110477: [LLDB] Fix objc_clsopt_v16_t struct: bulbazord.

Unfortunately I'm probably not the right person for this. @JDevlieghere may be the right person, and if not, he can probably point you to the right people.

Sep 27 2021, 1:30 PM · Restricted Project
bulbazord added a comment to D110115: [lldb] Remove Expression's dependency on CPlusPlusLanguagePlugin.

friendly ping! :)

Sep 27 2021, 10:49 AM · Restricted Project

Sep 23 2021

bulbazord updated the diff for D110115: [lldb] Remove Expression's dependency on CPlusPlusLanguagePlugin.

Rebasing

Sep 23 2021, 11:42 AM · Restricted Project

Sep 22 2021

bulbazord committed rG43552651319e: [lldb] Remove IRExecutionUnit::CollectFallbackNames (authored by bulbazord).
[lldb] Remove IRExecutionUnit::CollectFallbackNames
Sep 22 2021, 11:04 AM
bulbazord closed D109928: [lldb] Remove IRExecutionUnit::CollectFallbackNames.
Sep 22 2021, 11:04 AM · Restricted Project

Sep 21 2021

bulbazord added a comment to D109928: [lldb] Remove IRExecutionUnit::CollectFallbackNames.

I think this looks fine, just verify that this in a C++ case an expression with an extern "C" function call works fine e.g.

extern "C" {
  int g() { return 10;}
}

int main() {
   return g();  // break here and run expr g()
}

I discovered the other day that we mangle extern "C" functions in C++ mode and I have a fix I wanted to run by everyone but I have not had a chance to do it yet.

So this case get resolved in CollectFallbackNames(...).

Sep 21 2021, 4:04 PM · Restricted Project
bulbazord added a reviewer for D110115: [lldb] Remove Expression's dependency on CPlusPlusLanguagePlugin: shafik.
Sep 21 2021, 9:39 AM · Restricted Project
bulbazord added a reviewer for D109928: [lldb] Remove IRExecutionUnit::CollectFallbackNames: shafik.
Sep 21 2021, 9:39 AM · Restricted Project

Sep 20 2021

bulbazord added inline comments to D110115: [lldb] Remove Expression's dependency on CPlusPlusLanguagePlugin.
Sep 20 2021, 5:06 PM · Restricted Project
bulbazord requested review of D110115: [lldb] Remove Expression's dependency on CPlusPlusLanguagePlugin.
Sep 20 2021, 4:59 PM · Restricted Project
bulbazord committed rGc4a406bbd0fe: [lldb][NFC] Remove outdated FIXME (authored by bulbazord).
[lldb][NFC] Remove outdated FIXME
Sep 20 2021, 11:45 AM

Sep 16 2021

bulbazord added a comment to D109928: [lldb] Remove IRExecutionUnit::CollectFallbackNames.

Looks fine to me. I am assuming the full test suite passes with this change in place?

Sep 16 2021, 2:55 PM · Restricted Project
bulbazord added reviewers for D109928: [lldb] Remove IRExecutionUnit::CollectFallbackNames: jingham, teemperor, JDevlieghere.
Sep 16 2021, 2:40 PM · Restricted Project
bulbazord requested review of D109928: [lldb] Remove IRExecutionUnit::CollectFallbackNames.
Sep 16 2021, 2:32 PM · Restricted Project
bulbazord committed rGa65f6aafe2d3: [lldb] Refactor and rename CPlusPlusLanguage::FindAlternateFunctionManglings (authored by bulbazord).
[lldb] Refactor and rename CPlusPlusLanguage::FindAlternateFunctionManglings
Sep 16 2021, 1:31 PM
bulbazord closed D109785: [lldb] Refactor and rename CPlusPlusLanguage::FindAlternateFunctionManglings.
Sep 16 2021, 1:31 PM · Restricted Project

Sep 15 2021

bulbazord added inline comments to D109785: [lldb] Refactor and rename CPlusPlusLanguage::FindAlternateFunctionManglings.
Sep 15 2021, 4:31 PM · Restricted Project

Sep 14 2021

bulbazord requested review of D109785: [lldb] Refactor and rename CPlusPlusLanguage::FindAlternateFunctionManglings.
Sep 14 2021, 1:53 PM · Restricted Project
bulbazord added a reviewer for D109779: [LLDB] [Minidump] Fix format string warnings on Windows: MaskRay.

Adding MaskRay who fixed something similar to this yesterday.

Sep 14 2021, 1:46 PM · Restricted Project

Sep 13 2021

bulbazord committed rGc4fa2c8aa493: [lldb] Fix warning in MinidumpFileBuilder.cpp (authored by bulbazord).
[lldb] Fix warning in MinidumpFileBuilder.cpp
Sep 13 2021, 10:42 AM
bulbazord added a reviewer for D109633: [lldb-vscode] Fix focus thread when previous thread exits: wallace.
Sep 13 2021, 10:03 AM · Restricted Project

Sep 10 2021

bulbazord committed rG8dae35527fb7: [lldb] Remove unused typedefs from lldb-forward.h (authored by bulbazord).
[lldb] Remove unused typedefs from lldb-forward.h
Sep 10 2021, 2:17 PM
bulbazord accepted D109600: [lldb] Remove PluginInterface::GetPluginVersion.

Thank you!

Sep 10 2021, 10:00 AM · Restricted Project

Sep 8 2021

bulbazord committed rG303b27f21b98: [lldb] Delete IRExecutionUnit::SearchSpec (authored by bulbazord).
[lldb] Delete IRExecutionUnit::SearchSpec
Sep 8 2021, 11:29 AM
bulbazord closed D109384: [lldb] Delete IRExecutionUnit::SearchSpec.
Sep 8 2021, 11:28 AM · Restricted Project

Sep 7 2021

bulbazord added a reviewer for D109384: [lldb] Delete IRExecutionUnit::SearchSpec: aprantl.
Sep 7 2021, 4:55 PM · Restricted Project
bulbazord requested review of D109384: [lldb] Delete IRExecutionUnit::SearchSpec.
Sep 7 2021, 12:28 PM · Restricted Project

Aug 31 2021

bulbazord committed rG862a311301f5: [lldb] Tighten lock in Language::ForEach (authored by bulbazord).
[lldb] Tighten lock in Language::ForEach
Aug 31 2021, 3:47 PM
bulbazord closed D109013: [lldb] Tighten lock in Language::ForEach.
Aug 31 2021, 3:47 PM · Restricted Project
bulbazord added a comment to D109013: [lldb] Tighten lock in Language::ForEach.

For further context, I encountered this when debugging the test failures from D108229. BreakpointResolverName::AddNameLookup constructs a Module::LookupInfo in a callback that it passes to Language::ForEach.

Aug 31 2021, 11:55 AM · Restricted Project
bulbazord requested review of D109013: [lldb] Tighten lock in Language::ForEach.
Aug 31 2021, 11:53 AM · Restricted Project

Aug 30 2021

bulbazord abandoned D108395: [lldb] Delete IRExecutionUnit::CollectCandidateCPlusPlusNames.
Aug 30 2021, 3:10 PM · Restricted Project
bulbazord added a comment to D108395: [lldb] Delete IRExecutionUnit::CollectCandidateCPlusPlusNames.

Embarassingly I found out my test environment was not working correctly, this does indeed fail some tests. I will upload a patch to actually refactor it :)

Aug 30 2021, 3:10 PM · Restricted Project

Aug 25 2021

bulbazord added a comment to D108229: [lldb] Refactor Module::LookupInfo constructor.

FYI (you may have have already noticed) this causes some merge conflicts in swift-lldb. It would be great if we could work together to figure out how to best resolve them.

Aug 25 2021, 6:01 PM · Restricted Project

Aug 24 2021

bulbazord added a reverting change for rGcd2134e42aa7: [lldb] Refactor Module::LookupInfo constructor: rGce512d5c2af5: Revert "[lldb] Refactor Module::LookupInfo constructor".
Aug 24 2021, 2:53 PM
bulbazord committed rGce512d5c2af5: Revert "[lldb] Refactor Module::LookupInfo constructor" (authored by bulbazord).
Revert "[lldb] Refactor Module::LookupInfo constructor"
Aug 24 2021, 2:53 PM
bulbazord added a reverting change for D108229: [lldb] Refactor Module::LookupInfo constructor: rGce512d5c2af5: Revert "[lldb] Refactor Module::LookupInfo constructor".
Aug 24 2021, 2:53 PM · Restricted Project
bulbazord committed rGcd2134e42aa7: [lldb] Refactor Module::LookupInfo constructor (authored by bulbazord).
[lldb] Refactor Module::LookupInfo constructor
Aug 24 2021, 1:54 PM
bulbazord closed D108229: [lldb] Refactor Module::LookupInfo constructor.
Aug 24 2021, 1:54 PM · Restricted Project
bulbazord added inline comments to D108229: [lldb] Refactor Module::LookupInfo constructor.
Aug 24 2021, 11:55 AM · Restricted Project

Aug 23 2021

bulbazord committed rG23c19395c085: [lldb][NFC] Remove unused method RichManglingContext::IsFunction (authored by bulbazord).
[lldb][NFC] Remove unused method RichManglingContext::IsFunction
Aug 23 2021, 11:46 AM
bulbazord added a comment to D108229: [lldb] Refactor Module::LookupInfo constructor.

ping!

Aug 23 2021, 11:24 AM · Restricted Project

Aug 20 2021

bulbazord added a comment to D108395: [lldb] Delete IRExecutionUnit::CollectCandidateCPlusPlusNames.

I'm very supportive of the idea that we delete everything that isn't tested :) (and I'm only partly joking here).

I can sympathize, I'm only partly serious with this change! :D

Aug 20 2021, 1:32 PM · Restricted Project

Aug 19 2021

bulbazord requested review of D108395: [lldb] Delete IRExecutionUnit::CollectCandidateCPlusPlusNames.
Aug 19 2021, 11:41 AM · Restricted Project
bulbazord committed rG4947f6d8bca1: [lldb][NFC] Remove unused header include (authored by bulbazord).
[lldb][NFC] Remove unused header include
Aug 19 2021, 11:12 AM

Aug 18 2021

bulbazord requested review of D108335: [lldb] Move UnixSignals subclasses to lldbTarget.
Aug 18 2021, 3:11 PM · Restricted Project
bulbazord updated the diff for D108229: [lldb] Refactor Module::LookupInfo constructor.

Delete now unused variable

Aug 18 2021, 10:20 AM · Restricted Project

Aug 17 2021

bulbazord requested review of D108229: [lldb] Refactor Module::LookupInfo constructor.
Aug 17 2021, 11:55 AM · Restricted Project

Aug 3 2021

bulbazord committed rGd2b2ab4e1c34: [lldb] Further constrain a test that fails without python enabled (authored by bulbazord).
[lldb] Further constrain a test that fails without python enabled
Aug 3 2021, 11:58 AM

Aug 2 2021

bulbazord accepted D107295: [lldb] Use a struct to pass function search options to Module::FindFunction.

LGTM!

Aug 2 2021, 11:36 AM · Restricted Project
bulbazord accepted D107206: [lldb] Refactor IRExecutionUnit::FindInSymbols (NFC).

Yeah this is a lot cleaner. Thanks for taking the time to refactor this.

Aug 2 2021, 11:15 AM · Restricted Project
bulbazord added a comment to D107295: [lldb] Use a struct to pass function search options to Module::FindFunction.

I like the idea! Could be a little cleaner imo, but shouldn't be a blocker if others don't think so.

Aug 2 2021, 11:02 AM · Restricted Project

Jul 29 2021

bulbazord committed rG993220a99cce: [lldb] Remove CPlusPlusLanguage from Mangled (authored by bulbazord).
[lldb] Remove CPlusPlusLanguage from Mangled
Jul 29 2021, 2:14 PM
bulbazord closed D105215: [lldb] Remove CPlusPlusLanguage from Mangled.
Jul 29 2021, 2:14 PM · Restricted Project

Jul 28 2021

bulbazord added a comment to D105215: [lldb] Remove CPlusPlusLanguage from Mangled.

Thanks for the reviews and comments! It's kind of unfortunate that LLDB is like this right now but I believe this patch is a step in the right direction. :)

Jul 28 2021, 12:37 PM · Restricted Project

Jul 27 2021

bulbazord added inline comments to D105215: [lldb] Remove CPlusPlusLanguage from Mangled.
Jul 27 2021, 3:01 PM · Restricted Project
bulbazord committed rG0a74fbb7b1d3: [lldb][NFC] Fix incorrect log and comment (authored by bulbazord).
[lldb][NFC] Fix incorrect log and comment
Jul 27 2021, 2:44 PM

Jul 26 2021

bulbazord added a comment to D105215: [lldb] Remove CPlusPlusLanguage from Mangled.

@jingham I can change the name to GetFullyQualifiedBaseName if needed. Is there anything else here that should be changed or addressed?

Jul 26 2021, 12:39 PM · Restricted Project
bulbazord committed rGe42edce4a349: [lldb][NFC] Delete unused and commented out DWARF constants (authored by bulbazord).
[lldb][NFC] Delete unused and commented out DWARF constants
Jul 26 2021, 12:27 PM

Jul 21 2021

bulbazord committed rG8e6b31c3952b: [LLDB] Move Trace-specific classes into separate library (authored by bulbazord).
[LLDB] Move Trace-specific classes into separate library
Jul 21 2021, 1:29 PM
bulbazord closed D105649: [LLDB] Move Trace-specific classes into separate library.
Jul 21 2021, 1:28 PM · Restricted Project
bulbazord updated the diff for D105649: [LLDB] Move Trace-specific classes into separate library.

Updating

Jul 21 2021, 11:49 AM · Restricted Project

Jul 8 2021

bulbazord added a comment to D105215: [lldb] Remove CPlusPlusLanguage from Mangled.

I kind of feel that Language::GetDemangledFunctionNameWithoutArguments may be a bit too specific for a generalized language plugins. I think it may be worth it to make Mangled an interface that language plugins can implement (e.g. CPlusPlusMangledName) but I haven't totally thought out what the ramifications of that would be yet.

The name is unfortunate, but the notion that function types have an identifier, that is then decorated by arguments and maybe return types, seems pretty common. So in this particular case, maybe we just need a better name? GetBaseName isn't right since this function also returns any namespace information. Maybe GetFullyQualifiedBaseName?

Jul 8 2021, 12:25 PM · Restricted Project
bulbazord requested review of D105649: [LLDB] Move Trace-specific classes into separate library.
Jul 8 2021, 12:13 PM · Restricted Project

Jun 30 2021

bulbazord added a comment to D105215: [lldb] Remove CPlusPlusLanguage from Mangled.

I kind of feel that Language::GetDemangledFunctionNameWithoutArguments may be a bit too specific for a generalized language plugins. I think it may be worth it to make Mangled an interface that language plugins can implement (e.g. CPlusPlusMangledName) but I haven't totally thought out what the ramifications of that would be yet.

Jun 30 2021, 11:19 AM · Restricted Project
bulbazord requested review of D105215: [lldb] Remove CPlusPlusLanguage from Mangled.
Jun 30 2021, 11:16 AM · Restricted Project

Jun 29 2021

bulbazord abandoned D103210: [lldb] Introduce Language::MethodNameInfo.

Not going with this change

Jun 29 2021, 3:40 PM · Restricted Project

Jun 23 2021

bulbazord committed rG5bebc0b177d0: [lldb] Decouple ObjCLanguage from Symtab (authored by bulbazord).
[lldb] Decouple ObjCLanguage from Symtab
Jun 23 2021, 1:57 PM
bulbazord closed D104067: [lldb] Decouple ObjCLanguage from Symtab.
Jun 23 2021, 1:57 PM · Restricted Project

Jun 21 2021

bulbazord updated the diff for D104067: [lldb] Decouple ObjCLanguage from Symtab.

Addressed comments! :)

Jun 21 2021, 2:09 PM · Restricted Project

Jun 17 2021

bulbazord added a comment to D104067: [lldb] Decouple ObjCLanguage from Symtab.

ping!

Jun 17 2021, 11:04 AM · Restricted Project

Jun 12 2021

bulbazord updated the diff for D104067: [lldb] Decouple ObjCLanguage from Symtab.

Addressing comments

Jun 12 2021, 7:58 PM · Restricted Project

Jun 10 2021

bulbazord added a comment to D104067: [lldb] Decouple ObjCLanguage from Symtab.

Note that this is working towards solving the same problem as D103210 but it does so in a different way. Instead of repurposing the old diff, I made a new one so it is a little easier to compare/contrast. Hopefully it's not too confusing.

Jun 10 2021, 3:00 PM · Restricted Project
bulbazord requested review of D104067: [lldb] Decouple ObjCLanguage from Symtab.
Jun 10 2021, 2:59 PM · Restricted Project

Jun 8 2021

bulbazord committed rG64576a1be887: [lldb][NFC] Refactor name to index maps in Symtab (authored by bulbazord).
[lldb][NFC] Refactor name to index maps in Symtab
Jun 8 2021, 12:38 PM
bulbazord closed D103652: [lldb][NFC] Refactor name to index maps in Symtab.
Jun 8 2021, 12:38 PM · Restricted Project
bulbazord updated the diff for D103652: [lldb][NFC] Refactor name to index maps in Symtab.

Rename function :)

Jun 8 2021, 12:23 PM · Restricted Project

Jun 7 2021

bulbazord updated the diff for D103652: [lldb][NFC] Refactor name to index maps in Symtab.

Remove unused line of code that I forgot to remove previously

Jun 7 2021, 1:35 PM · Restricted Project
bulbazord updated the diff for D103652: [lldb][NFC] Refactor name to index maps in Symtab.

Address feedback

Jun 7 2021, 1:33 PM · Restricted Project

Jun 3 2021

bulbazord added a comment to D103210: [lldb] Introduce Language::MethodNameInfo.

We have a method called Language::GetMethodNameVariants, that could be extended/modified to be more suitable. Unless you had something else in mind? Maybe something more specific to Symtab mapping like Language::GetFunctionNameSearchVariants.

That actually seems like a great idea! Module::LookupInfo also seems quite close to the data structure we would need to return, so we could in theory return a list of that from the function instead.

Awesome, I'll work on that next :)

This makes sense to me, I'll also make this change in this patch :)

Feel free to also put it up as a NFC patch. It seems in general like a good cleanup from what I can see, so that should be a quick review :)

Just uploaded: D103652

Jun 3 2021, 3:12 PM · Restricted Project